BindingSource.Find 键比较不区分大小写吗?
我正在使用 BindingSource.Find() 在刷新 DataGridView 后返回到用户的位置。我使用 BindingSource.Find() 和 RowID 作为我正在搜索的 DataColumn。不幸的是,Oracle 可以返回两个仅大小写不同的 RowID。
BindingSource.Find() 返回第一个匹配项,无论大小写。
查看MSDN文档:
public int Find(string propertyName, Object key)
它说propertyName比较不区分大小写,但没有提到key比较是否不区分大小写。
有谁知道如何使 BindingSource.Find 区分大小写?
I'm using BindingSource.Find() to return to the user's position after refreshing a DataGridView. I use BindingSource.Find() and a RowID as the DataColumn I'm searching on. Unfortunately, Oracle can return two RowIDs that differ only in their case.
BindingSource.Find() returns the first match regardless of case.
Looking at the MSDN docs:
public int Find(string propertyName, Object key)
it says that the propertyName comparison is case-insensitive, but does not mention whether the key comparison is.
Does anyone know how to make BindingSource.Find case sensitive?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
对于
DataView
,您需要做的就是将父DataTable
的CaseSensitive
属性设置为true。我只是使用以下代码快速构建了原型,并且工作正常:对于其他类型的 IBindingList,正如文档所说,您需要一个实现区分大小写的 Find 的底层列表。为了完整起见,我在下面显示了执行此操作的代码:
CaseSensitiveBindingList 的代码是:
该代码几乎肯定可以改进,但显示了一般概念。
For a
DataView
all you should need to do is set theCaseSensitive
property of the parentDataTable
to true. I just quickly prototyped that with the following code and it works fine:For other types of IBindingList you need, as the docs say, an underlying list that implements a Find which is case sensitive. For completeness I have shown the code to do this below:
And the code for the CaseSensitiveBindingList is:
That code could almost certainly be improved but shows the general concept.