我有一个文本框和一个gridview。将根据在文本框中输入的值填充gridview。假设我在文本框中输入任何名称。当我在文本框中键入名称时,网格中的结果应该动态更改。例如,如果我在文本框中输入John,则在输入Jo之后,网格应填充以Jo开头的结果,如果我输入h,则网格应使用Joh填充结果,依此类推。请为此建议一个解决方案(在c#中)。提前谢谢。
答案 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的精彩参考网站。这有你想要的双向绑定。