使用据库Sql2000下的Pubs中的表Jobs.
做一个窗体,有一个DataGrid显示Jobs中Job_id,Job_Desc,Max_lvl三列所有的信息,一个文本框,要求实现在文本框中输入一个值,过滤Jobs中的Min_lvl字段为相同的记录在DataGrid中显示.
如输入 75,DataGrid中只有Min_lvl=75的记录显示.
注意Min_lvl不在DataGrid中显示.

解决方案 »

  1.   

    那你就把这条sql语句构建好,执行获得dataset就可以了啊
    "select Job_id,Job_Desc,Max_lvl" +
    " from jobs"
    " where min_lvl = " + this.text1.Text
      

  2.   

    取 Job_id,Job_Desc,Max_lvl,Min_lvl到 dataset,帮定到DataGrid,隐藏min_lvl列dataGrid1.DataSource=ds.Tables[0].defaultView;在文本框change事件里面写 ds.Tables[0].defaultView.RowFilter = "min_lvl=" + this.text1.Text
      

  3.   

    楼上两位说得都没错,但都忽略了一个问题:this.text1.Text为空值情况,这里提供完整解法:public partial class Form18 : Form
        {
            private SqlDataAdapter sqlDA = null;
            private SqlConnection sqlCn = null;
            private string strCn = "Data Source=(local);Initial Catalog=pubs;"
            + "Integrated Security=SSPI;";
            private string strSql = "select Job_id,Job_Desc,Max_lvl from jobs";
            public Form18()
            {
                InitializeComponent();
                sqlCn = new SqlConnection(strCn);
                
            }        private void Form18_Load(object sender, EventArgs e)
            {
                sqlDA = new SqlDataAdapter(strSql, sqlCn);
                DataTable dt = new DataTable();
                sqlDA.Fill(dt);
                dataGridView1.DataSource = dt;
            }        private void textBox1_TextChanged(object sender, EventArgs e)
            {
                string strFilter = " where min_lvl = " + this.textBox1.Text.Trim();            try
                {
                    if (textBox1.Text!="")
                        strSql = "select Job_id,Job_Desc,Max_lvl from jobs" + strFilter;
                    else
                        strSql = "select Job_id,Job_Desc,Max_lvl from jobs";
                    sqlDA = new SqlDataAdapter(strSql, sqlCn);
                    DataTable dt = new DataTable();
                    sqlDA.Fill(dt);
                    dataGridView1.DataSource = dt;
                    dataGridView1.Refresh();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
      

  4.   

    绑定之前先取出来放在dataset里
    再根据textbox的事件.过滤掉dataset 的不相关的记录.再次绑定即可
    dataview.filter属性
      

  5.   

    lotuswlz(蒹葭) ( )
    sdl2005lyx() ( ) 信誉:
    有一点大家注意,DataSet是断开式数据集,要在客户端完成数据检索,现在我用的也是能数据库重新获取,这个表的数据时效性不高,不必总是到数据库查吧。只想在客户端过滤。woyaomoney(高级伴读书童) 
    你的法方要试试,还有一点就是当文本框中为空时,想要再显示所有的数据怎么实现?
      

  6.   

    用rowfilter, 把Min_lvl这一列隐藏起来if(!string.IsNullOrEmpty(text1.Text.Trim()))
      dataset.Tables["job"].DefaultView.RowFilter = "min_lvl=" + text1.Text.Trim();
      

  7.   

    using System;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Windows.Forms;
    using System.Data;namespace DataFilter
    {
    /// <summary>
    /// Form1 的摘要说明。
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
    private System.Windows.Forms.DataGrid dataGrid1;
    private System.Windows.Forms.TextBox textBox1;
    private System.Windows.Forms.Button button1;
    private System.Data.SqlClient.SqlDataAdapter sqlDataAdapter1;
    private System.Data.SqlClient.SqlCommand sqlSelectCommand1;
    private System.Data.SqlClient.SqlConnection sqlConnection1;
    private DataFilter.DataSet1 dataSet11;
    private System.Windows.Forms.DataGridTableStyle dataGridTableStyle1;
    private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn1;
    private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn2;
    private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn3;
    /// <summary>
    /// 必需的设计器变量。
    /// </summary>
    private System.ComponentModel.Container components = null; public Form1()
    {
    //
    // Windows 窗体设计器支持所必需的
    //
    InitializeComponent(); //
    // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
    //
    } /// <summary>
    /// 清理所有正在使用的资源。
    /// </summary>
    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if (components != null) 
    {
    components.Dispose();
    }
    }
    base.Dispose( disposing );
    } #region Windows 窗体设计器生成的代码
    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
    this.dataGrid1 = new System.Windows.Forms.DataGrid();
    this.textBox1 = new System.Windows.Forms.TextBox();
    this.button1 = new System.Windows.Forms.Button();
    this.sqlDataAdapter1 = new System.Data.SqlClient.SqlDataAdapter();
    this.sqlSelectCommand1 = new System.Data.SqlClient.SqlCommand();
    this.sqlConnection1 = new System.Data.SqlClient.SqlConnection();
    this.dataSet11 = new DataFilter.DataSet1();
    this.dataGridTableStyle1 = new System.Windows.Forms.DataGridTableStyle();
    this.dataGridTextBoxColumn1 = new System.Windows.Forms.DataGridTextBoxColumn();
    this.dataGridTextBoxColumn2 = new System.Windows.Forms.DataGridTextBoxColumn();
    this.dataGridTextBoxColumn3 = new System.Windows.Forms.DataGridTextBoxColumn();
    ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
    ((System.ComponentModel.ISupportInitialize)(this.dataSet11)).BeginInit();
    this.SuspendLayout();
    // 
    // dataGrid1
    // 
    this.dataGrid1.DataMember = "jobs";
    this.dataGrid1.DataSource = this.dataSet11;
    this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
    this.dataGrid1.Location = new System.Drawing.Point(16, 24);
    this.dataGrid1.Name = "dataGrid1";
    this.dataGrid1.Size = new System.Drawing.Size(440, 208);
    this.dataGrid1.TabIndex = 0;
    this.dataGrid1.TableStyles.AddRange(new System.Windows.Forms.DataGridTableStyle[] {
      this.dataGridTableStyle1});
    // 
    // textBox1
    // 
    this.textBox1.Location = new System.Drawing.Point(120, 272);
    this.textBox1.Name = "textBox1";
    this.textBox1.Size = new System.Drawing.Size(160, 21);
    this.textBox1.TabIndex = 1;
    this.textBox1.Text = "";
    // 
    // button1
    // 
    this.button1.Location = new System.Drawing.Point(336, 272);
    this.button1.Name = "button1";
    this.button1.Size = new System.Drawing.Size(112, 24);
    this.button1.TabIndex = 2;
    this.button1.Text = "button1";
    this.button1.Click += new System.EventHandler(this.button1_Click);
    // 
    // sqlDataAdapter1
    // 
    this.sqlDataAdapter1.SelectCommand = this.sqlSelectCommand1;
    this.sqlDataAdapter1.TableMappings.AddRange(new System.Data.Common.DataTableMapping[] {
      new System.Data.Common.DataTableMapping("Table", "jobs", new System.Data.Common.DataColumnMapping[] {
      new System.Data.Common.DataColumnMapping("job_id", "job_id"),
      new System.Data.Common.DataColumnMapping("job_desc", "job_desc"),
      new System.Data.Common.DataColumnMapping("min_lvl", "min_lvl"),
      new System.Data.Common.DataColumnMapping("max_lvl", "max_lvl")})});
    // 
    // sqlSelectCommand1
    // 
    this.sqlSelectCommand1.CommandText = "SELECT job_id, job_desc, min_lvl, max_lvl FROM jobs";
    this.sqlSelectCommand1.Connection = this.sqlConnection1;
    // 
    // sqlConnection1
    // 
    this.sqlConnection1.ConnectionString = "workstation id=SHOUAO;packet size=4096;integrated security=SSPI;data source=local" +
    "host;persist security info=False;initial catalog=pubs";
    // 
    // dataSet11
    // 
    this.dataSet11.DataSetName = "DataSet1";
    this.dataSet11.Locale = new System.Globalization.CultureInfo("zh-CN");
    // 
    // dataGridTableStyle1
    // 
    this.dataGridTableStyle1.DataGrid = this.dataGrid1;
    this.dataGridTableStyle1.GridColumnStyles.AddRange(new System.Windows.Forms.DataGridColumnStyle[] {
      this.dataGridTextBoxColumn1,
      this.dataGridTextBoxColumn2,
      this.dataGridTextBoxColumn3});
    this.dataGridTableStyle1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
    this.dataGridTableStyle1.MappingName = "jobs";
    // 
    // dataGridTextBoxColumn1
    // 
    this.dataGridTextBoxColumn1.Format = "";
    this.dataGridTextBoxColumn1.FormatInfo = null;
    this.dataGridTextBoxColumn1.HeaderText = "纺中";
    this.dataGridTextBoxColumn1.MappingName = "job_id";
    this.dataGridTextBoxColumn1.Width = 75;
    // 
    // dataGridTextBoxColumn2
    // 
    this.dataGridTextBoxColumn2.Format = "";
    this.dataGridTextBoxColumn2.FormatInfo = null;
    this.dataGridTextBoxColumn2.HeaderText = "名字";
    this.dataGridTextBoxColumn2.MappingName = "job_desc";
    this.dataGridTextBoxColumn2.Width = 75;
    // 
    // dataGridTextBoxColumn3
    // 
    this.dataGridTextBoxColumn3.Format = "";
    this.dataGridTextBoxColumn3.FormatInfo = null;
    this.dataGridTextBoxColumn3.HeaderText = "最大";
    this.dataGridTextBoxColumn3.MappingName = "max_lvl";
    this.dataGridTextBoxColumn3.Width = 75;
    // 
    // Form1
    // 
    this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
    this.ClientSize = new System.Drawing.Size(496, 373);
    this.Controls.Add(this.button1);
    this.Controls.Add(this.textBox1);
    this.Controls.Add(this.dataGrid1);
    this.Name = "Form1";
    this.Text = "Form1";
    this.Load += new System.EventHandler(this.Form1_Load);
    ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
    ((System.ComponentModel.ISupportInitialize)(this.dataSet11)).EndInit();
    this.ResumeLayout(false); }
    #endregion /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main() 
    {
    Application.Run(new Form1());
    } private void Form1_Load(object sender, System.EventArgs e)
    {
    this.sqlDataAdapter1.Fill(this.dataSet11,"jobs");
    } private void button1_Click(object sender, System.EventArgs e)
    {
    this.dataSet11.jobs.DefaultView.RowFilter="min_lvl="+textBox1.Text.Trim();
    }
    }
    }
    我做了这个窗体,功能实现不了啊!哪位高人帮忙看看
      

  8.   

    实现同样的功能,代码较短 ,可供参考private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    SqlConnection myConnection=new SqlConnection();
    string strConn="server=Localhost;uid=sa;pwd=000000;database=Northwind";
    myConnection.ConnectionString=strConn;
    //创建SqlDataAdapter
    SqlDataAdapter myCommand=new SqlDataAdapter("select * from Categories",myConnection);
    DataSet ds=new DataSet();//创建DataSet实例
    myCommand.Fill(ds,"作者");
    myDataGrid.DataSource=ds.Tables["作者"].DefaultView;
    myDataGrid.DataBind();
    }