@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

GridViewで行・列の入れ替え

1
投稿者投稿内容
かぼちゃ
会議室デビュー日: 2008/03/05
投稿数: 2
投稿日時: 2008-03-05 19:53
初めて投稿させていただきます。
よろしくお願いします。

現在VS2005+C#でWebアプリケーションを作成しようとしています。
GridViewの行列の入れ替え+αで苦慮しております。

DB上に以下のような構造のテーブルがあります。
 id,品番1,個数1,品番2,個数2,品番3,・・・

これをDataGrid上で、以下のように表示させたいと思っています。
|品番     |個数     |
|品番1のデータ|個数1のデータ|
|品番2のデータ|個数2のデータ|
 ・
 ・
 ・

基本書などは手元にあるのですが、このようなケースに対応した記事が無く、
手詰まってしまっております。
稚拙な質問で申し訳ありませんが、よろしくお願いします。
RapidExpress
常連さん
会議室デビュー日: 2007/11/11
投稿数: 42
お住まい・勤務地: おおさか
投稿日時: 2008-03-05 20:26
引用:

|品番     |個数     |
|品番1のデータ|個数1のデータ|
|品番2のデータ|個数2のデータ|


一行をこういう形で表示したいということであれば、TemplateFieldを2列作って
それぞれにLabelやらを縦に3つずつ出すようにしてみてはどうでしょう?

...じゃなかった、2つずつでした。


[ メッセージ編集済み 編集者: RapidExpress 編集日時 2008-03-05 21:59 ]
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2008-03-06 07:11
引用:

DB上に以下のような構造のテーブルがあります。
 id,品番1,個数1,品番2,個数2,品番3,・・・


このような正規化されていないテーブルを設計すると、後で泣くことになりますよ。

今回は、なんとか解決策を見つけても将来致命的な問題が発生する可能性があります。

データベースを再設計したらどうでしょうか。
_________________
ASP.NET+Ajaxサンプル集 | JavaScript+Ajaxサンプル集
indigo-x
大ベテラン
会議室デビュー日: 2008/02/21
投稿数: 207
お住まい・勤務地: 太陽の塔近く
投稿日時: 2008-03-06 08:16
一時DataTableに入れなおせばいいと思います。(その後Bind)


Accessさんが言われているように、品番単位の集計とか、品番で検索するとか

は無いですよね。。。。。(あればSELECT文を想像してみてください)
かぼちゃ
会議室デビュー日: 2008/03/05
投稿数: 2
投稿日時: 2008-03-07 19:23
ご返答ありがとうございます。

>データベースを再設計したらどうでしょうか。
他社さんからもらってるテーブルが元なので、簡単に直してって言えないのです…


>Accessさんが言われているように、品番単位の集計とか、品番で検索するとか
>は無いですよね。。。。。(あればSELECT文を想像してみてください)

うっ…
質問では長くなるので書かなかったのですが、
|品番1|(別テーブルから)品番1の商品名|個数1|(さらに別テーブルから)金額1|
という風に、他のテーブルにあるデータとも絡めろと言われています。
結果として見積表を作ろうとしているのです。

>一時DataTableに入れなおせばいいと思います
というのは、どのようにしたらよろしいのでしょうか?
表示用のDataTableを新たに作るということでしょうか?
indigo-x
大ベテラン
会議室デビュー日: 2008/02/21
投稿数: 207
お住まい・勤務地: 太陽の塔近く
投稿日時: 2008-03-07 19:37
そうですか。テーブル変更出来ないですか。。。。
引用:

表示用のDataTableを新たに作るということでしょうか?


そうです。表示用を作ります。

もう一つの案ですが、汚いテーブルから正規化されたテーブルに
トリガーで同期させる様にする(ちょっと厄介ですが、また件数の問題もあり)
と集計等が楽ですが(たくさん集計があればメリットあり)

あくまでも案で現実的かどうかは判断してください。
choir
会議室デビュー日: 2006/07/31
投稿数: 15
お住まい・勤務地: 東京都
投稿日時: 2008-03-12 12:48
PIVOT使うと多分楽になると思います。
Oracle11g、もしくはSQLServer2005以降限定ではありますが。。。
1

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