SPGridViewを使用していくつかのデータを表示し、非常にうまく機能するフィルタリング機能を有効にしました。フィルタリングするデータ内の特定のアイテムを選択するまで...
問題のデータ項目の文字列にアポストロフィが含まれているため(たとえば、「これはリチャードの文字列です」)、フィルタアプリケーション後のページの読み込みがエラーで終了します。
Syntax error: Missing operand after 's' operator.
明らかに、データは自動的に安全にされるわけではありません...
データはデータテーブルにあり、SPGridViewはデータテーブルを使用するobjectdatasourceを使用して供給されます。
データを安全に使用できるようにするための最良の、または正しい方法は何ですか?
編集:
何度も口を閉ざした後、私は部分的な答えを見つけましたが、質問はまだ残っています。
部分的な答えは、データをフィルターコードに対して安全にすることはできますが、フィルタードロップダウンGUIで正しく表示することはできません。
BoundField.HtmlEncode=trueを追加します。SPGridView定義に対しては何もしません。
文字列でHttpUtility.HtmlEncodeを使用しても、何も起こりません。
データ内のすべてのアポストロフィをアンパサンド#39に手動で置き換えます。DataTableに挿入すると、フィルターは正常に機能し、データはSPGridViewに正常に表示されますが、フィルターのドロップダウンにhtml置換文字列が表示され、アポストロフィ文字は表示されません。これは部分的な解決策であり、エンドユーザーに表示される恐ろしいフィルター文字列を作成するため、実際には使用できません。
私はまだこの問題の完全な解決策を見つける必要がありますが、データから問題のある文字を完全に削除することを除いて、これは実際には解決策ではありません。
よろしくリチャード