- - PR -
ASP.NETで独自フォーマットで出力したい
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2002-06-09 23:38
はじめましてKatsunoriです
DatagridなどでDataSourceを指定して、 数値などのフーマットはDataBinder.Eval(Container.DataItem,"jikan","{0:D}") みたいにEvalを指定しているのですが、 データベースのフィールド内にURLEncodeしたデータをURLDecodeで出力したり フィールド内のタグを無効にしてから出力したいのですが どうすれば良いのでしょうか。 |
|
投稿日時: 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