- PR -

DataGrid内のデータのエンコードについて

1
投稿者投稿内容
カタナ
大ベテラン
会議室デビュー日: 2006/05/25
投稿数: 110
投稿日時: 2006-07-05 14:41
いつもお世話になります。現在、ASP.NET(VS2003)にて開発を行っています。
▼処理内容
1.SQL文を発行しDataSetにデータを取得
2.DataGridにDataSetの内容をバインドする

▼問題点
1のSQL文を発行した際に、データの中に<br>などのデータが既に存在する。(このデータは他社が作成したアプリケーションで入力されたデータであり、入力チェック等で<br>を除去することは費用がかかる為に不可能とのこと)
その結果2でバインドした後のデータグリッドには<br>と入力されているデータはブランクで表示されてしまいます。

できれば、HtmlEncodeを利用して、データグリッド内でも<br>と表示したいのですが、そのようなことは可能なのでしょうか?

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=28252&forum=7
を参考にしたりしているのですが、分かりません。
なにかいい方法があったら、ご教授ください。
しょくぱん
常連さん
会議室デビュー日: 2006/05/31
投稿数: 31
投稿日時: 2006-07-05 14:52
DataGridの該当の列をテンプレート列にし、

<ItemTemplate>
 <%# System.Web.HttpUtility.HtmlEncode((string)DataBinder.Eval(Container, "DataItem.name")) %>
</ItemTemplate>

このように書くとエンコードされます。

ただし、これだとバインドしたデータがDBNullだったりするとおちるので、
私は、Nullチェック&エンコードした文字列を返すようなpublicメソッド(aspx.csに書くときはprotectedでも)を用意してやってそれを使うようにしています。
カタナ
大ベテラン
会議室デビュー日: 2006/05/25
投稿数: 110
投稿日時: 2006-07-05 17:51
しょくばんさんありがとうございます。
思っていたとおりの結果を得られることができました!!

データグリッドをテンプレート列に変換しないといけないのが大変ですけど、頑張ります。
1

スキルアップ/キャリアアップ(JOB@IT)