2011-03-29 129 views
0

我知道我已经问了很多次这个问题,但我已经得到了答案,可以帮助我。 请,需要建议我已经尝试做1周或更多。DataGridView过滤问题

我有我的dataGrid的用户控件。有toolBar With按钮,它打开Find form有一个按钮和一个文本框。单击此按钮我调用方法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

回答

1

你可以使用的BindingSource

BindingSource bs = new BindingSource(); 

,然后在搜索(字符串搜索内容)

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

它不起作用。我甚至无法隐藏另一个表单中的datagrid列 – 2011-03-29 14:43:07

1

你试过dgvInventory.ResetBindings()?

[编辑:错误的陈述,而不是.ResetBindings .REFRESH]

+0

我试着它现在但不起作用。在其他表单上datagridview不起作用 – 2011-03-29 09:55:04

+0

其实它是ResetBindings()我正在考虑上面提到的cdel。我认为刷新是针对用户界面表示。 – 2011-03-29 11:37:12