none
关于数据的检索问题 RRS feed

  • 问题

  • 建立了一个dataGridView1

    关联了数据源
    但这个表有3万多条数据,每次在调试运行的时候,都要把这3万条数据检索完

    可否在程序运行的时候,不检索数据,根据文本框的查询条件检索数据呢
    2009年6月10日 2:31

答案

  • 你好,
    • 手工来绑定,将一个DataTable绑定到DataGridView,至于DataTable里面的内容是什么,完全可以由你的条件控制。把条件传给数据库,再把返回的数据集赋予DataTable。

    邹俊才
    2009年6月10日 2:36
    版主
  • 当然可以,
    1 你可以在文件框输入条件,在文本框在按回车时提交查询,将查询结果绑定到 DataGridView 
    2 你可以在文件框输入条件,通过点击按钮(如查询按钮)提交查询,将查询结果绑定到 DataGridView 
    3 第一次加载 3万条数据,通过 BindingSource 来绑定 dataGridView 在文本框文件变化的事件中,动态修改 BindingSource的 Filter 属性实现过滤,意思就是说只查询一次数据库以后过滤都是在内存中实现

    知识改变命运,奋斗成就人生!
    2009年6月10日 2:36
    版主
  • 这里有详细的步骤,希望对你有帮助:
    http://msdn.microsoft.com/zh-cn/library/fbk67b6z(VS.80).aspx
    周雪峰
    2009年6月10日 3:07
    版主

全部回复

  • 你好,
    • 手工来绑定,将一个DataTable绑定到DataGridView,至于DataTable里面的内容是什么,完全可以由你的条件控制。把条件传给数据库,再把返回的数据集赋予DataTable。

    邹俊才
    2009年6月10日 2:36
    版主
  • 当然可以,
    1 你可以在文件框输入条件,在文本框在按回车时提交查询,将查询结果绑定到 DataGridView 
    2 你可以在文件框输入条件,通过点击按钮(如查询按钮)提交查询,将查询结果绑定到 DataGridView 
    3 第一次加载 3万条数据,通过 BindingSource 来绑定 dataGridView 在文本框文件变化的事件中,动态修改 BindingSource的 Filter 属性实现过滤,意思就是说只查询一次数据库以后过滤都是在内存中实现

    知识改变命运,奋斗成就人生!
    2009年6月10日 2:36
    版主
  • 可以给一个具体的例子参考一下吗?

    2009年6月10日 2:40
  • using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace X.WinFormsApp
    {
        /// <summary>
        /// 输入查询的 Name 过滤显示
        /// </summary>
        public partial class X200906101045 : Form
        {
            private TextBox fInput;
            private DataGridView fDataGridView;
            private BindingSource fBindingSource;
    
            #region " Employee "
    
            private DataSet fEmployee;
            public DataSet Employee
            {
                get
                {
                    if (fEmployee == null)
                    {
                        fEmployee = new DataSet();
                        fEmployee.Tables.Add(new DataTable("Employee"));
                        
    
                        fEmployee.Tables[0].Columns.Add(new DataColumn("EmployeeKey", typeof(Int32)));
                        fEmployee.Tables[0].Columns.Add(new DataColumn("Name", typeof(String)));
                        fEmployee.Tables[0].Columns.Add(new DataColumn("ModifyDate", typeof(DateTime)));
    
                        fEmployee.Tables[0].Rows.Add(new object[] { 1, "John", DateTime.Now });
                        fEmployee.Tables[0].Rows.Add(new object[] { 2, "Tomi", DateTime.Now });
                        fEmployee.Tables[0].Rows.Add(new object[] { 3, "X.XY", DateTime.Now });
                        fEmployee.Tables[0].Rows.Add(new object[] { 4, "Sam", DateTime.Now });
                        fEmployee.Tables[0].Rows.Add(new object[] { 5, "Mary", DateTime.Now });
                        fEmployee.Tables[0].Rows.Add(new object[] { 6, "Chirs", DateTime.Now });
                    }
    
                    return fEmployee;
                }
            }
    
            #endregion
    
            public X200906101045()
            {
                InitializeComponent();
                this.InitControl();
            }
    
            private void InitControl()
            {
                fInput = new TextBox();
                fInput.Location = new Point(10, 10);
                fInput.KeyUp += new KeyEventHandler(fInput_KeyUp);
    
                fDataGridView = new DataGridView();
                fDataGridView.Location = new Point(10, 40);
                fDataGridView.Size = new Size(300,300);
    
                fBindingSource = new BindingSource(this.Employee, "Employee");
                fDataGridView.DataSource = fBindingSource;
    
                this.Controls.Add(fInput);
                this.Controls.Add(fDataGridView);
            }
    
            void fInput_KeyUp(object sender, KeyEventArgs e)
            {
                this.fBindingSource.Filter = string.Format("Name LIKE '%{0}%'", this.fInput.Text);
            }
        }
    
    }
    

    知识改变命运,奋斗成就人生!
    2009年6月10日 2:59
    版主
  • 这里有详细的步骤,希望对你有帮助:
    http://msdn.microsoft.com/zh-cn/library/fbk67b6z(VS.80).aspx
    周雪峰
    2009年6月10日 3:07
    版主