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