在网格视图外部textbox_TextChanged事件上更新网格视图内容

本文关键字:视图 网格 更新 事件 外部 textbox TextChanged | 更新日期: 2023-09-27 17:57:15

我已经搜索了这个,但找不到任何解决方案textchanged网格视图之外的事件导致结果变化。作为新手,我无法附加图像。我希望通过数据表在网格视图中显示的结果根据我在网格视图外部的文本框中键入的内容进行更新。C# 中的代码将不胜感激。最后,我想在按 ENTER 键以进一步使用时检索 ID。

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        DataTable table = new DataTable();
            string sql; table.Columns.Add("Name");

            dbconnect db = new dbconnect();
            db.createconnection();
            sql = "select custcompany from customer";
            db.dbadapter = new OleDbDataAdapter(sql, db.dbconnection);
            DataTable dtt = new DataTable();
            db.dbadapter.Fill(dtt);
            for (int i = 0; i < dtt.Rows.Count; i++)
            {
                table.Rows.Add(dtt.Rows[i][0]);
            }
            sql = "select suppcompany from supplier";
            db.dbadapter = new OleDbDataAdapter(sql, db.dbconnection);
            DataTable dtt1 = new DataTable();
            db.dbadapter.Fill(dtt1);
            for (int i = 0; i < dtt1.Rows.Count; i++)
            {
                table.Rows.Add(dtt1.Rows[i][0]);
            }
            dataGridView1.DataSource = table;

            if (textBox1.Text != "")
            {
                DataView dv = new DataView();
                dv.RowFilter = string.Format("Name = '{0}'", textBox1.Text);
                dataGridView1.DataSource = dv;

            }
            else if (textBox1.Text == "")
            {
                dataGridView1.DataSource = table;
            }
        }

table是在加载事件上填充的数据表的名称。

在网格视图外部textbox_TextChanged事件上更新网格视图内容

如果测试框有价值,您正在创建一个新的DataView实例并将其分配给dataGridView1,我的问题是 DataView 对象中是否有价值?如果您完全按照问题中给出的内容进行操作,那么它将不起作用,因为dv没有价值可以在dataGridView1中显示。

通过访问数据库获取有关TextChanged事件的table数据。如果您有任何代码将数据库值放入table则在此事件中使用它,然后再绑定到DataGridView1

因为table值会在PostBack后丢失。因此,您需要再次将值重新加载到table中。请尝试以下操作,

private void textBox1_TextChanged(object sender, EventArgs e)
{
    //table = fill the table with proper values by accessing the database
    if (textBox1.Text != "")
    {
        DataView dv = table.DefaultView;
        dv.RowFilter = string.Format("Name = '{0}'", textBox1.Text);
        dataGridView1.DataSource = dv;
        dataGridView1.DataBind();
    }
    else if (textBox1.Text == "")
    {
        dataGridView1.DataSource = table;
        dataGridView1.DataBind();
    }
}

更新

要搜索以字母开头的名称,请使用,

dv.RowFilter = string.Format("Name like  '{0}%'", textBox1.Text);

要搜索包含字母的名称,请使用,

dv.RowFilter = string.Format("Name like  '%{0}%'", textBox1.Text);

要搜索以字母结尾的名称,

dv.RowFilter = string.Format("Name like  '%{0}'", textBox1.Text);