- PR -

DataGridで出来ますでしょうか

投稿者投稿内容
DCPRG
会議室デビュー日: 2004/09/06
投稿数: 15
投稿日時: 2005-05-09 21:59
いつもお世話になっております。
ASP.NETで下記内容を実現出来ず、壁にぶち当たっております。
RDBから下記のようなDataSetを作成し、それをGOODSGROUPごとに、
列を分けて表組みし表示させたいのです。

コード:
GOODGROUP GOODS COST
A         123   1000
A         456   1500
A         789   2000
B         777   3000
C         001   500
C         002   550

+----+----+----+
|123 |777 |001 |
|1000|3000|500 |
+----+----+----+
|456 |    |002 |
|1500|    |550 |
+----+    +----+
|789 |
|2000|
+----+


上記例ですと、セル内上段がGOODSで、下段がCOSTになります。
左列からGOODSGROUPのA→B→C…と並びます。
DataList等色々検討してみたのですが、
一筋縄ではいきません。
もし何かヒントになる事がございましたら、
教えて頂けませんでしょうか。
よろしくお願いいたします。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-05-09 23:15
表示の方法が独特で標準のコントロールでは表現できそうもないので、
カスタムコントロールを自作してはいかがでしょう。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-05-09 23:23
リストコントロールの中にリストコントロールを入れれば実現できるんじゃないかな?
外側のリストコントロールにはGOODSGROUPのDISTINCTした結果をバインドして、内側のリストコントロールは該当のGOODSGROUP毎に問い合わせた結果をバインドしてやれば良いような気がする。
DCPRG
会議室デビュー日: 2004/09/06
投稿数: 15
投稿日時: 2005-05-10 01:41
いつもお世話になっております。
NAL-6295様、DataListの中にDataListを入れる…という
点ですが、もう少し詳しくお聞かせ願えないでしょうか…?
勝手を言いまして申し訳ありません、よろしくお願い致します。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-05-10 01:45
テンプレートにデータリストを設定すれば良いのでは?
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2005-05-10 07:58
引用:

DCPRGさんの書き込み (2005-05-09 21:59) より:
いつもお世話になっております。
ASP.NETで下記内容を実現出来ず、壁にぶち当たっております。
RDBから下記のようなDataSetを作成し、それをGOODSGROUPごとに、
列を分けて表組みし表示させたいのです。


SQLでDataGridに表示したいようなレイアウトでレコードを抽出
できないのであれば、作業用のDataTableにDataGridに表示したい
レイアウトで作成しなおしたらどうでしょうか。

_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
DCPRG
会議室デビュー日: 2004/09/06
投稿数: 15
投稿日時: 2005-05-10 10:54
いつもお世話になっております。

DataListを入れ子にする案に関し、下記のように書いてみました。

コード:
<asp:DataList id="DataList1" runat="server" RepeatDirection="Vertical">
	<HeaderTemplate>
		<table border="1">
	</HeaderTemplate>
	<ItemTemplate>
		<tr>
		<td><%# DataBinder.Eval(Container.DataItem, "GG") %></td>
		<td>
		<asp:DataList id="DataList2" runat="server" DataKeyField="GG">
			<HeaderTemplate>
				<table border="1">
			</HeaderTemplate>
			<ItemTemplate>
				<tr>
					<td><%# DataBinder.Eval(Container.DataItem, "GOODS") %></td>
				</tr>
			</ItemTemplate>
			<FooterTemplate>
				</table>
			</FooterTemplate>
		</asp:DataList>
		</td>
		<td>test</td>
		</tr>
	</ItemTemplate>
	<FooterTemplate>
		</table>
	</FooterTemplate>
</asp:DataList>



そして、コードの方で、
コード:
Dim dl As DataList = CType(DataList1.Controls(0).FindControl("DataList2"), DataList)
dl.DataSource = ds.Tables(0).DefaultView
dl.DataBind()


…と記述したのですが、子の方(DataList2)は何も表示されません。
親の方(DataList1)に対しても別データをバインドしていますが、
こちらの方は表示されます。

何か根本的に違うのでしょうか?ご指摘等お願いいたします。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-05-10 11:10

ItemTemplateに設定したDataListにDataBindするコードが記述されてませんよね。
基本的には、DataList1のItemBound毎にGoodsのタイプでフィルタリングしたDataViewをバインドすれば表示されます。
って内容を以前のレスで記述したんですが・・・

#このあたりは、マニュアルどおりにやればよいかと・・・

_________________
一つ理解するたびに、一つあなたは楽になる。

[ メッセージ編集済み 編集者: NAL-6295 編集日時 2005-05-10 11:16 ]

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