- PR -

DataGridで出来ますでしょうか

投稿者投稿内容
Ten.
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 67
投稿日時: 2005-05-10 14:50
一般的かどうかは分かりませんが、リレーションを使う方法もあります。
ただ、入れ子にした場合は、罫線を引こうとすると面倒なことになるかもしれません。

ASPX側
コード:
<asp:DataList id=DataList1 runat="server" RepeatDirection="Horizontal"
 AlternatingItemStyle-VerticalAlign="Top" ItemStyle-VerticalAlign="Top">
<ItemTemplate>
<asp:DataList id=DataList2 runat="server"
 DataSource='<%# ((System.Data.DataRowView)Container.DataItem).Row.GetChildRows("GoodsGroupGoods") %>'>
<ItemTemplate>
<asp:Literal runat="server"
 Text='<%# ((System.Data.DataRow)Container.DataItem)["GoodsCode"].ToString() %>'></asp:Literal><br>
<asp:Literal runat="server"
 Text='<%# ((System.Data.DataRow)Container.DataItem)["Cost"].ToString() %>'></asp:Literal>
</ItemTemplate>
</asp:DataList>
</ItemTemplate>
</asp:DataList>


コードビハインド側
コード:
DataTable goodsGroup = new DataTable("GoodsGroup");
goodsGroup.Columns.Add("GoodsGroupCode",typeof(string));

DataTable goods = new DataTable("Goods");
goods.Columns.Add("GoodsGroupCode",typeof(string));
goods.Columns.Add("GoodsCode",typeof(string));
goods.Columns.Add("Cost",typeof(int));

DataSet ds = new DataSet();
ds.Tables.Add(goodsGroup);
ds.Tables.Add(goods);

goodsGroup.Rows.Add(new object[]{"A"});
goodsGroup.Rows.Add(new object[]{"B"});
goodsGroup.Rows.Add(new object[]{"C"});

goods.Rows.Add(new object[]{"A","123",1000});
goods.Rows.Add(new object[]{"A","456",1500});
goods.Rows.Add(new object[]{"A","789",2000});
goods.Rows.Add(new object[]{"B","777",3000});
goods.Rows.Add(new object[]{"C","001",500});
goods.Rows.Add(new object[]{"C","002",550});

goodsGroup.ChildRelations.Add("GoodsGroupGoods",
	goodsGroup.Columns["GoodsGroupCode"],goods.Columns["GoodsGroupCode"]);

this.DataList1.DataSource = goodsGroup;
this.DataList1.DataBind();

DCPRG
会議室デビュー日: 2004/09/06
投稿数: 15
投稿日時: 2005-05-13 11:03
NAL-6295様、Ten様、ありがとうございました。
またご返事が大変遅くなり申し訳ございませんでした。
ItemDataBoundイベント時に、別途DataViewを作成し、
バインディングする事で実現しました。
本当にありがとうございました。

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