【问题标题】:Dynamically changing gridview based on the value getting entered into a textbox根据输入到文本框中的值动态更改网格视图
【发布时间】:2023-04-04 09:35:01
【问题描述】:

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

【问题讨论】:

  • 你的网格的数据源是什么?

标签: c#


【解决方案1】:

您需要处理 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;
} 

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

【讨论】:

    【解决方案2】:

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

        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;
        }
    

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

    【讨论】:

      【解决方案3】:

      这是Binding a DataGridView to Collection 上的一个很好的参考网站。这具有您正在寻找的两种绑定方式。

      【讨论】:

        猜你喜欢
        • 2022-01-12
        • 2013-02-22
        • 1970-01-01
        • 1970-01-01
        • 2012-12-14
        • 1970-01-01
        • 2014-04-22
        • 1970-01-01
        • 2021-12-02
        相关资源
        最近更新 更多