【问题标题】:RowFilter for DataView数据视图的行过滤器
【发布时间】:2016-08-17 13:51:23
【问题描述】:

我遇到了 DataView.RowFilter 没有返回它应该返回的正确行的问题。我目前保留 Col2 在数据库中有我的变量名,而 Col3 是与变量名关联的值。当我尝试使用下面的过滤器拉数据视图时,它不会添加一行。当我删除过滤器时,我的所有记录都在那里。任何人都知道为什么或可以向我解释我的过滤器有什么问题,或者数据视图不能只返回一行吗?

.RowFilter = String.Format("[Col2] LIKE '%{0}%' AND [Col3] = '{1}'", Name, Value)

搜索示例是 Col2 我正在搜索名字,Col3 是我正在搜索姓名 Joe。

【问题讨论】:

  • 不清楚您在这里要做什么。表达式的语法是 COLNAME = VALUE。为什么值周围有方括号?您能否添加一个使用此语法搜索的值的示例?
  • 我在另一篇文章中读到 [] 是为了删除多余的空格
  • 我认为表达式的值部分中的方括号被视为文字并添加到您正在搜索的字符串中
  • 如果您正在搜索以 Joe 作为值的名字,那么您可以编写 "[FirstName] LIKE '%Joe%'" 当然,如果完全匹配,您可以删除通配符,如果大小写完全匹配,您删除 LIKE 并使用 =
  • 以防万一有人发现这个问题,我想指出在字段名称周围使用方括号是有效的;就个人而言,我更喜欢使用它们,因为如果字段名称包含表达式解析器认为特殊的任何字符,它会清理字段名称。 RowFilter 属性遵循 DataColumn.Expression Property 的语法规则。

标签: vb.net dataview rowfilter .net-4.5.2


【解决方案1】:

事实证明它不是过滤器,当我单步执行代码的其他部分时,它在检查用户是否有权编辑数据库时破坏了它。

【讨论】:

  • 如果用户搜索像 O'Brien 这样的名字,您的代码可能会中断(除非 Name 变量已经过清理)
猜你喜欢
  • 2017-03-22
  • 1970-01-01
  • 2021-09-18
  • 1970-01-01
  • 2019-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多