Я использую SPGridView для представления некоторых данных и включил возможность фильтрации, которая работает очень хорошо. Пока вы не выберете определенный элемент данных для фильтрации ...
Элемент данных, о котором идет речь, имеет апостроф в строке (например, «это строка Ричардса»), что приводит к прекращению загрузки страницы приложения после фильтрации с ошибкой:
Syntax error: Missing operand after 's' operator.
Очевидно, что данные не становятся автоматически безопасными ...
Данные находятся в базе данных, и SPGridView подается с использованием источника данных объекта с использованием таблицы данных.
Каков наилучший или правильный метод обеспечения безопасности данных?
EDIT:
После долгих скрежетов я нашел частичный ответ, но вопрос все еще остается.
Частичный ответ - вы можете сделать данные безопасными для кода фильтра, но затем вы не сможете сделать их правильными в выпадающем меню фильтра.
Добавление BoundField.HtmlEncode = true; к определению SPGridView ничего не делает.
Использование HttpUtility.HtmlEncode в строке ничего не делает.
Вручную заменяя все апострофы в данных амперсандом # 39; вставка в DataTable позволяет фильтру работать нормально, и данные хорошо отображаются в SPGridView, но отображаются со строкой замены html в раскрывающемся списке фильтра, а не с символом апострофа. Это частичное решение, и его нельзя использовать, поскольку оно создает ужасную строку фильтра, которая видна конечному пользователю.
Мне еще предстоит найти полное решение этой проблемы, за исключением полного удаления оскорбительных символов из данных, что в действительности не является решением.
С уважением
Ричард