我正在使用 SPGridView 来呈现一些数据,并启用了非常有效的过滤功能。直到您选择要过滤的数据中的特定项目...
有问题的数据项在字符串中有一个撇号(例如“这是理查兹的字符串”),这会导致过滤后应用程序页面加载因错误而终止:
Syntax error: Missing operand after 's' operator.
显然,数据不会自动变得安全......
数据在数据表中,并且 SPGridView 使用使用数据表的 objectdatasource 馈送。
确保数据安全使用的最佳或正确方法是什么?
编辑:
经过一番咬牙切齿,我找到了部分答案,但问题仍然存在。
部分答案是 - 您可以使过滤器代码的数据安全,但您无法使其在过滤器下拉 gui 中看起来正确。
添加 BoundField.HtmlEncode = true; 到 SPGridView 定义什么都不做。
在字符串上使用 HttpUtility.HtmlEncode 什么也不做。
用 & #39 手动替换数据中的所有撇号;在插入 DataTable 时允许过滤器正常工作,并且数据在 SPGridView 中显示正常,但它在过滤器下拉列表中显示 html 替换字符串,而不是撇号字符。这是部分解决方案,并不能真正使用,因为它会创建一个对最终用户可见的可怕过滤器字符串。
我仍然要找到这个问题的完整解决方案,除了从数据中完全删除违规字符,这并不是真正的解决方案。
问候理查德