- PR -

ASP.NETで独自フォーマットで出力したい

1
投稿者投稿内容
katsunori
会議室デビュー日: 2002/06/09
投稿数: 5
投稿日時: 2002-06-09 23:38
はじめましてKatsunoriです
DatagridなどでDataSourceを指定して、
数値などのフーマットはDataBinder.Eval(Container.DataItem,"jikan","{0:D}")
みたいにEvalを指定しているのですが、
データベースのフィールド内にURLEncodeしたデータをURLDecodeで出力したり
フィールド内のタグを無効にしてから出力したいのですが
どうすれば良いのでしょうか。
うりゅう
大ベテラン
会議室デビュー日: 2002/06/15
投稿数: 202
お住まい・勤務地: Hiroshima
投稿日時: 2002-06-15 23:34
はじめまして、うりゅうです。
この件に関しては僕も大変苦しんでまして、まだ、解決はしてないのですが、
これまで調べた結果がヒントになればと思い書き込みました。

VS.NETのオンラインドキュメントを読んでいると、まず原則としてですが、
『必ずしもDataBinder.Evalを使う必要はない』ということがわかります。
ASP.NETにおけるデータ連結で絶対に必要になるのはむしろ、
『<%# %>』の部分です。実際に、サンプルの中には以下のようなコードが
存在します。
------------------引用--------------------------------
<ItemTemplate>
数値: <%# Container.DataItem %>
偶数/奇数: <%# EvenOrOdd(Container.DataItem) %>
</ItemTemplate>
------------------------------------------------------
とすると、メソッドなどを自由に使えるということになりそうなのですが、
残念ながらまだ、上手くコーディングできてません(苦笑)。

そこで、邪道な方法なのは百も承知で、以下のような方法を考えました。

*原則としてASP.NETにおいてDataSetによる処理では、データを更新しても最終的にUPDATE処理やAcceptChangesを行わない限り、元のデータは更新されない。
1.DataSourceとして、DataViewなどDataSetから派生するソースを割り当てる事とする。
2.DataSource指定の直前で、Forループ構文などを用いて、DataViewなどの列の内、処理を行わなければいけない列の全行(表示される)に処理を行う。
3.DataSource指定とバインディングを行う。

これで、HTML側はなんの変更も行わなくても、独自フォーマットでの出力が行えます。もちろん、元になるデータベースそのものが変更されることはありません。
かなり邪道なのは明確なので(苦笑)ニーズにそぐわない方もいるかもしれませんが、かなり自由度は高いです。ページングを行っていれば、処理がそれほど重たくなることもないと思います。

はっきりした解答ではありませんが、ご参考になれば幸いです。
_________________
--------------------------------------
ネットビルド 小田原貴樹
odahara@netbuiuld.jp
--------------------------------------
1

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