- PR -

DataGridのデータフォーマット式

1
投稿者投稿内容
SE卵
大ベテラン
会議室デビュー日: 2004/10/22
投稿数: 135
投稿日時: 2004-12-20 13:04
こんにちは。只今、ASP.NET(VB.NET)でWebアプリを作成しています。ある画面に
DataGridを表示しています。そのDataGridのある列のデータが、Boolean型なので
True/Falseとして設定されてしまいます。本来のやりたい事としては、Trueの場合
は"*" Falseの場合は""を表示するようにしたいのです。その時に下記のような方法
を考えました。

@DataGridにデータをバインドした後、一つ一つのセルを取得し判断し、適切な文
字列を表示する。

ADataGridにデータをバインドしている時(ItemDataBound)時に判断し、適切な文
字列を表示する。

両方実装してみたものの、当たり前ですけど、レスポンスが遅くなります

通貨型などを表示する際に使う(例:{0:C})列のデータフォーマット式でどうにか
ならないものなのでしょうか?

どなたか、ご存知であれば教えて頂きたいので、よろしくお願い致します。



[ メッセージ編集済み 編集者: SE卵 編集日時 2004-12-20 13:06 ]
未記入
常連さん
会議室デビュー日: 2004/11/30
投稿数: 21
投稿日時: 2004-12-20 13:20
データを取得する時のクエリー文を「Trueなら"*"、Falseなら""」として作成すれば良いのではないですか?
SE卵
大ベテラン
会議室デビュー日: 2004/10/22
投稿数: 135
投稿日時: 2004-12-20 13:36
未記入さん、ご返答ありがとうございます。
クエリ文を変更するのも良い手かもしれませんね。しかし、今回はデータとしては
True/Falseで保持しておきたいのです。説明不足で申し訳ございません。理由と
してはDataGridが編集モードに移行した場合は、CheckBoxで表示するようにしたい
からなんです。その際、"*"だったらチェックなどの判断処理は入れたくないのです
。わがままな事かもしれませんが、どうかよろしくお願い致します。

にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2004-12-20 14:07
コード:
<asp:TemplateColumn HeaderText="ヘッダ">
  <ItemTemplate>
    <asp:Label runat="server" Text='<%# ((bool)DataBinder.Eval(Container.DataItem, "TheField")) ? "*" : "" %>' />
  </ItemTemplate>
  <EditItemTemplate>
    <asp:CheckBox runat="server" Checked='<%# DataBinder.Eval(Container.DataItem, "TheField") %>' />
  </EditItemTemplate>
</asp:TemplateColumn>

とやればできますが…速度には問題ありかもしれません。
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2004-12-20 14:09
おっと、VB.NETだった。
コード:
<asp:TemplateColumn HeaderText="ヘッダ">
  <ItemTemplate>
    <asp:Label runat="server" Text='<%# IIf(CType(DataBinder.Eval(Container.DataItem, "TheField"), Boolean), "*", "") %>' />
  </ItemTemplate>
  <EditItemTemplate>
    <asp:CheckBox runat="server" Checked='<%# DataBinder.Eval(Container.DataItem, "TheField") %>' />
  </EditItemTemplate>
</asp:TemplateColumn>

かな?
SE卵
大ベテラン
会議室デビュー日: 2004/10/22
投稿数: 135
投稿日時: 2004-12-20 14:20
にしざきさん、どうもありがとうございます。こちらが考えた2つのパターンより早いです。
このやり方で進めていきます。これ以上の速度アップが要求される場合は、別のデータ取得
部分とかでなんとか調整したいと思います。いつもいつもほんとにありがとうございます。
1

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