根据输入文本框的值动态更改gridview

时间:2009-06-19 06:31:02

标签: c#

我有一个文本框和一个gridview。将根据在文本框中输入的值填充gridview。假设我在文本框中输入任何名称。当我在文本框中键入名称时,网格中的结果应该动态更改。例如,如果我在文本框中输入John,则在输入Jo之后,网格应填充以Jo开头的结果,如果我输入h,则网格应使用Joh填充结果,依此类推。请为此建议一个解决方案(在c#中)。提前谢谢。

3 个答案:

答案 0 :(得分:0)

您需要处理txtBox的文本更改事件。并使用与文本框匹配的数据重新绑定数据网格

private void txtBox_TextChanged(object sender, EventArgs e)
{
    string strValue = this.txtBox.Text;
    DataSet ds = ... // Get the dataset that matches strValue 
    this.dgrid.DataSource = ds;
} 

但是,在每个字母用户输入后重新加载datagrid将是一个非常昂贵的操作。用户完成输入文本后,我建议提供重新加载按钮。

答案 1 :(得分:0)

如果您的数据不经常更改(例如,当用户在表单或页面上时进行了许多更改),那么您可以获取所有数据并将其缓存在您自己中。然后,您只需根据输入到文本框中的值过滤此数据集:

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
        if (tb.Text == "")
        {
            //Unfilter the data
            gv.DataSource = dtb;
            return;
        }
        //Get default view of your data table and filter
        DataView dv = dtb.DefaultView;

        //Suppose your column name is "Value"
        dv.RowFilter = "Value like '" + tb.Text + "%'";

        gv.DataSource = dv;
    }

但是你不认为在每次按键时过滤大量数据都很重要。您可以在焦点丢失(模糊)文本框或用户按下回车键时执行此操作。只是我的想法...

答案 2 :(得分:0)

这是一个关于Binding a DataGridView to Collection的精彩参考网站。这有你想要的双向绑定。