Ich verwende eine SPGridView, um einige Daten zu präsentieren, und habe die Filterfähigkeit aktiviert, die sehr gut funktioniert. Bis Sie ein bestimmtes Element in den zu filternden Daten wählen ...SPGridView, Daten und korrekte Methode, um sicherzustellen, dass Daten sicher sind
Das fragliche Datenelement hat einen Apostroph in der Zeichenkette (zB "dies ist die Zeichenkette von Richard"), der die Nachfilter-Anwendungsseite verursacht Last mit dem Fehler sterben:
Syntax error: Missing operand after 's' operator.
Offensichtlich werden die Daten nicht automatisch sicher gemacht ...
die Daten werden in einer Datentabelle ist, und die SPGridView gespeist wird mit einem Objectdatatable verwenden.
Was ist die beste oder korrekte Methode, um sicherzustellen, dass die Daten sicher zu verwenden sind?
EDIT:
Nach viel Knirschen, ich habe eine Teilantwort gefunden, aber die Frage bleibt.
Die teilweise Antwort ist - Sie können die Daten für den Filter-Code sicher machen, aber Sie können es dann nicht korrekt in der Filter-Dropdown-GUI aussehen.
Hinzufügen von BoundField.HtmlEncode = true; zur SPGridView-Definition tut nichts.
Mit HttpUtility.HtmlEncode auf der Zeichenfolge tut nichts.
Manuelles Ersetzen aller Apostrophe in den Daten durch Ampersand # 39; Beim Einfügen in die DataTable kann der Filter ordnungsgemäß funktionieren, und die Daten werden in SPGridView angezeigt. Sie werden jedoch mit der HTML-Ersetzungszeichenfolge im Filterdropdown und nicht mit dem Apostroph angezeigt. Dies ist die Teillösung und ist nicht wirklich brauchbar, da sie eine schreckliche Filterkette erzeugt, die für den Endbenutzer sichtbar ist.
Ich bin immer noch auf der Suche nach einer vollständigen Lösung für dieses Problem, abgesehen von der Entfernung von beleidigenden Zeichen aus den Daten insgesamt, die nicht wirklich eine Lösung ist.
Grüße Richard
Das ist ein Problem, das ich zu lesen, aber nirgends i'v jede bessere Lösung gesehen, als Sie gefunden haben. –