- PR -

[ASP.NET(VB)]dataGridに画像

1
投稿者投稿内容
es
常連さん
会議室デビュー日: 2003/08/18
投稿数: 20
投稿日時: 2003-10-01 00:28
いつも大変勉強になってます。

今回は、何度かレスにも出ているDataGridに画像の表示をする件でお聞きしたい事があります。DataGridに画像を表示する際は、DataGridコントロールを右クリックしてプロパティビルダでテンプレート列を加え、テンプレートの編集でイメージコントロールを配置する。というのは解っていますが、
DataGridのItemCreateやItemDataBound時でテンプレート列に配置したイメージコントロールのImageURLを直接設定することは無理でしょうか?

これは少し別件になってしまうのですが、DataGridのカラムの列順を並び替えることは、同じくItemCreateやItemDataBoundで設定できませんか?

現在DataGridのプロパティビルダであらかじめ、固定のカラム(画像表示用)を設定し、ページロードした時に、後から変動するSQL文を作ったdataTableをDataSourseに設定して自動生成してます。動的にカラムを追加していったほうがスマートですか?
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-10-02 00:07
引用:
DataGridのItemCreateやItemDataBound時でテンプレート列に配置したイメージコントロールのImageURLを直接設定することは無理でしょうか?

ItemDataBoundイベントだとセル中にImageコントロールがあるかどうかを
いちいちチェックしてから設定してやることになると思います。
他のセルの値を元に画像を設定するような場合は、ItemDataBoundで行う方法でよいと思います。

引用:
これは少し別件になってしまうのですが、DataGridのカラムの列順を並び替えることは、同じくItemCreateやItemDataBoundで設定できませんか?

DataBind前であれば似たようなことはやったことあります。
DataBind時に行・列などが構築されるため、DataBind後にカラム位置などを変更しても
反映されません。
es
常連さん
会議室デビュー日: 2003/08/18
投稿数: 20
投稿日時: 2003-10-02 11:00
ぴでさんいつもありがとうございます。
ItemDataBound内で探すとなりますと、

e.Item.FindControl("img_Listmark")

でいいんですか?
ImageURL = "XXXXX.gif"
までたどり着けなくて。すいません、教えていただいてもいいですか?
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-10-02 11:37
引用:
ItemDataBound内で探すとなりますと、

e.Item.FindControl("img_Listmark")

でいいんですか?
ImageURL = "XXXXX.gif"
までたどり着けなくて。すいません、教えていただいてもいいですか?

VB.Netはあまり使ったことないんですが、こんな感じでキャストしてみてください。
CType(e.Item.FindControl("img_Listmark"),
System.Web.UI.WebControls.Image).ImageURL = "hoge.gif"
es
常連さん
会議室デビュー日: 2003/08/18
投稿数: 20
投稿日時: 2003-10-02 12:15
どうも、e.Item.FindControl("img_Listmark")の時点でNothingになっているようです。
img_ListmarkというIDのイメージコントロールはテンプレート列に設定してあるのですが・・・
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-10-02 13:07
ItemDataBoundイベントはヘッダ部分等でも発生するため、
その時はNothingになっていると思います。
Nothingかどうか判定してもできると思いますが、よくあるサンプルでは
ItemTypeを使って判定しています。
詳しくはListItemType列挙体のリファレンスを見てください。
コード:
If e.Item.ItemType = ListItemType.Item Then
  CType(e.Item.FindControl("img_Listmark"),
    System.Web.UI.WebControls.Image).ImageURL = "hoge.gif"
End If

es
常連さん
会議室デビュー日: 2003/08/18
投稿数: 20
投稿日時: 2003-10-02 15:17
ありがとうございます。

e.Item.ItemType = ListItemType.Item
だと、交互に表示されましたが、
e.Item.ItemType = ListItemType.AlternatingItem
も条件に加えることでできました。

後は、bind前にカラムを並び替えるだけで解決します。

1

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