.NET TIPS

[ASP.NET]DataGridコントロールの列に複数の項目を表示するには?

デジタルアドバンテージ
2003/11/21

 DataGridコントロールでは、連結列で記述された列には1つの項目しか表示できないが、テンプレート列を用いることにより、複数の項目を1つの列内に表示することができる。

 次の画面は、今回作成するサンプル・プログラムの実行画面である。このサンプル・プログラムでは、1つの列に2つの項目(「概要」と「URL」)を罫線で区切って表示している。

1つの列に複数の項目を表示するサンプル・プログラム(multirow.aspx)の実行画面

 このサンプル・プログラムは「TIPS:[ASP.NET]DataGridコントロールで特定のカラムのみを表示するには?」の示したサンプル・プログラム(bounddg2.aspx)の一部を書き換えたものだ。元のプログラムでは、例えば次のような連結列の記述により列を定義していた。

<asp:BoundColumn DataField="description" HeaderText="概要" />

 この列ではデータソースのdescriptionフィールドのデータを項目として表示するが、ここで指定可能なDataField属性は1つのみだ。

 同じ列にlinkフィールドのデータも表示したい場合には、次のようにテンプレート列を使用する。

  <asp:TemplateColumn HeaderText="概要<hr>URL">
    <ItemTemplate>
      <%# DataBinder.Eval(Container.DataItem, "description") %>
      <hr>
      <%# DataBinder.Eval(Container.DataItem, "link") %>
    </ItemTemplate>
  </asp:TemplateColumn>

 テンプレート列の基本的な記述方法については「TIPS:[ASP.NET]DataGridコントロールの行に通し番号を付けるには?」で解説している。ここでは、1つの<ItemTemplate>要素に2つのデータ連結式を埋め込み、それらを罫線表示のための<hr>タグで区切っているところがポイントだ。また、列名表示に使用されるHeaderText属性の値にも<hr>タグを埋め込んで、ヘッダー行も同じように複数行表示にしている。

 サンプル・プログラムのソース・コードを次に示しておく。

<%@ Page Language="C#" EnableViewState="false" %>
<%@ Import Namespace="System.Data" %>

<html>
<head>
  <script runat="server">
    void Page_Load(object sender, EventArgs e) {
      DataSet ds = new DataSet();
      ds.ReadXml("http://www.atmarkit.co.jp/rss/fdotnet/rss2dc.xml");

      MyGrid.DataSource = ds.Tables["item"];
      MyGrid.DataBind();
    }
  </script>
</head>

<body>
<form runat="server">
  <asp:DataGrid id="MyGrid"
      AutoGenerateColumns="false"
      CellPadding="4"
      runat="server" >

    <HeaderStyle BackColor="#BB2255" ForeColor="white" />
    <ItemStyle   BackColor="#FFEEEE" />
    <AlternatingItemStyle BackColor="#FFDDDD" />

    <Columns>
      <asp:BoundColumn
          DataField="title" HeaderText="タイトル" />

      <asp:TemplateColumn HeaderText="概要<hr>URL">
        <ItemTemplate>
          <%# DataBinder.Eval(Container.DataItem, "description") %>
          <hr>
          <%# DataBinder.Eval(Container.DataItem, "link") %>
        </ItemTemplate>
      </asp:TemplateColumn>
    </Columns>

  </asp:DataGrid>
</form>
</body>
</html>
1つの列に複数の項目を表示するC#のサンプル・プログラム(multirow.aspx)

 なお、罫線ではなく単に改行のみがよいのなら<hr>を<br>に書き換えればよい。End of Article

カテゴリ:Webフォーム 処理対象:DataGridコントロール
使用ライブラリ:DataGridコントロール
使用ライブラリ:<asp:TemplateColumn>要素
関連TIPS:[ASP.NET]DataGridコントロールで特定のカラムのみを表示するには?
関連TIPS:[ASP.NET]DataGridコントロールの行に通し番号を付けるには?
 
この記事と関連性の高い別の.NET TIPS
[ASP.NET]DataGridコントロールの行に通し番号を付けるには?
[ASP.NET]DataGridコントロールの編集用テキストボックスをカスタマイズするには?
[ASP.NET]DataGridコントロールの列を実行時に表示/非表示するには?
[ASP.NET]DataGridコントロールのハイパーリンク列で複数のパラメータをデータ連結するには?
[ASP.NET]DataGridコントロールでテンプレート列のセルの値を取得するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」

TechTargetジャパン

Insider.NET フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH