SPGridView, dane i poprawna metoda zapewnienia danych są bezpieczne

Używam SPGridView do prezentowania niektórych danych i włączam zdolność filtrowania, która działa bardzo dobrze. Dopóki nie wybierzesz konkretnego elementu w danych do filtrowania ...

Przedmiotowy element danych ma apostrof w łańcuchu (np. „Jest to ciąg znaków Richarda”), co powoduje, że ładowanie strony aplikacji po filtrze umiera z błędem:

Syntax error: Missing operand after 's' operator. 

Oczywiście dane nie są automatycznie zabezpieczane ...

Dane znajdują się w datatable, a SPGridView jest zasilany przy użyciu źródła danych obiektu, które korzysta z datatable.

Jaka jest najlepsza lub poprawna metoda zapewnienia bezpieczeństwa danych?

EDYTOWAĆ:

Po wielu zgrzytaniach znalazłem częściową odpowiedź, ale pytanie nadal pozostaje.

Częściowa odpowiedź brzmi - możesz sprawić, że dane będą bezpieczne dla kodu filtru, ale wtedy nie możesz sprawić, by wyglądał poprawnie w liście rozwijanej filtra.

Dodawanie BoundField.HtmlEncode = true; do definicji SPGridView nic nie robi.

Użycie HttpUtility.HtmlEncode na łańcuchu nic nie robi.

Ręczne zastępowanie wszystkich apostrofów w danych znakiem ampersand # 39; po wstawieniu do tabeli DataTable filtr działa poprawnie, a dane są dobrze wyświetlane w SPGridView, ale są wyświetlane z ciągiem zastępczym HTML w liście rozwijanej filtru, a nie znakiem apostrofu. Jest to rozwiązanie częściowe i nie jest tak użyteczne, ponieważ tworzy straszny ciąg filtrów, który jest widoczny dla użytkownika końcowego.

Nadal muszę znaleźć kompletne rozwiązanie tego problemu, z wyjątkiem całkowitego usuwania obraźliwych znaków z danych, co nie jest rozwiązaniem.

Pozdrawiam Richarda

questionAnswers(1)

yourAnswerToTheQuestion