DataGridView过滤问题

时间:2011-03-29 09:40:03

标签: c# winforms data-binding datagridview datasource

我知道我已经多次问过这个问题了,但我得到的答案可以帮助我。 请提出我已经尝试过1周或更长时间的建议。

我有用户控制我的dataGrid。有工具栏带按钮打开查找表格有一个按钮和一个文本框。在此按钮上单击我调用方法Search(),如下所示:

private void btnFind_Click_1(object sender, EventArgs e) { Inventory i = new Inventory(); i.Search(txtFind.Text); } 这就是方法Search的工作原理:

public void Search(string searchWord) 
    {
        AcidDBDataContext db = new AcidDBDataContext();
        var q = db.ProcSearch(searchWord);
        dgvInventory.DataSource = q;
    }

此方法在库存中工作正常,但是当我单击btnFind它什么都不做时,我使用调试器并看到查询正在正确执行并从表中获取行。 问题出现在这一行:dgvInventory.DataSource = q;

我正在使用c#winForms和SQL Server 2008

2 个答案:

答案 0 :(得分:1)

您是否尝试过dgvInventory.ResetBindings()?

[编辑:错误陈述.Refresh代替.ResetBindings]

答案 1 :(得分:1)

您可以使用BindingSource

BindingSource bs = new BindingSource();

然后在搜索(string searchWord)

//dgvInventory.DataSource = q;
bs.DataSource = q;
if (dgvInventory.DataSource == null)
    dgvInventory.DataSource = bs;
else
    bs.ResetBindings(false);