**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由打字错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
2天前关闭。
Improve this question
我在窗体上有一个dataGridView控件。
我在项目中创建了一个SQL数据库的数据集。
我可以很容易地将一个表绑定到我的dataGridView控件,tableAdapter填充dataGridView--没有问题。
现在,我已经浏览了所有的论坛和FAQ,但是我一辈子都无法让defaultView.rowFilter()函数处理绑定到dataGridView的dataTable。
我曾经让它完美地工作过一次,没有任何其他答案所给予的复杂和令人困惑的解决方案。事实上,过滤器只使用了这样一行简单的代码:
(dataGridCustomers.DataSource as DataTable).DefaultView.RowFilter = String.Format("'{0}' LIKE '{1}%' OR '{0}' LIKE '%{1}%' ", columnName, txtFilterTxt.Text);
我尝试了各种各样的方法,比如创建dataTable和bindingSources,它们与我在整个项目中使用的主数据集是分开的,但都无济于事。
正如我所说的-我已经通过了什么感觉像几十个论坛,但不能找到简单的方法,我以前的工作,这就是为什么我诉诸于问我自己的问题,我很少这样做。
我觉得应该很简单-我做错了什么?任何帮助都将不胜感激。
1条答案
按热度按时间mbjcgjjk1#
感谢Jimi建议使用绑定源代码(以及删除过滤器查询周围的引号):
为什么列名要用引号括起来?--我不明白使用BindingSource作为DGV的DataSource会使事情变得复杂。在这种情况下,它只是
(dataGridCustomers.DataSource as BindingSource).Filter = "...";
。但是您有额外的工具可以使用(BindindSource的DataSource可以是完全不同的东西,但是您使用相同的方法)您可能还删除了值中的引号。筛选器应为
string.Format("{0} LIKE '{1}%' OR {0} LIKE '%{1}%' ", columnName, txtFilterTxt.Text);
或$"{columnName} LIKE '{txtFilterTxt.Text}%' OR {columnName} LIKE '%{txtFilterTxt.Text}%'";
现在一切似乎都运转良好。