- PR -

行が多段複数項目で構成されるリスト表示

1
投稿者投稿内容
M@RTIN
会議室デビュー日: 2003/01/23
投稿数: 3
投稿日時: 2008-11-07 02:29
お世話になります。

VS2008/C#/.netframework3.5 でのGUI開発を
チャレンジし始めて2週間程のVC#初心者ですが
どうしても行き詰ったのでご意見をお聞かせ願います。

Filemakerを利用して作成したデータベースアプリと似た物を
C#でWindowsフォームアプリケーションで書こうとしています。

 親レコード┬アイテム1
      ├アイテム2
      ├アイテム3
     ・・・

上記のような構造のデータを表示するため
親レコードの情報を表示するウィンドウに
関連アイテムのレコードの情報の一部を
リスト表示したいのですが
下記のようなテーブル的な構成を1行としたリスト表示を行いたい場合
どのようにしたらよいものか困っています。

  アイテム名    日付
  項目1 項目2 項目3

何かよい解決方法・参考記事などあればご教授願います。

[ メッセージ編集済み 編集者: M@RTIN 編集日時 2008-11-07 02:33 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-11-07 07:10
引用:

M@RTINさんの書き込み (2008-11-07 02:29) より:
Filemakerを利用して作成したデータベースアプリと似た物を
C#でWindowsフォームアプリケーションで書こうとしています。

 親レコード┬アイテム1
      ├アイテム2
      ├アイテム3
     ???

上記のような構造のデータを表示するため
親レコードの情報を表示するウィンドウに
関連アイテムのレコードの情報の一部を
リスト表示したいのですが
下記のようなテーブル的な構成を1行としたリスト表示を行いたい場合
どのようにしたらよいものか困っています。

  アイテム名    日付
  項目1 項目2 項目3




「レコード」「アイテム」「項目」の関係を明らかにして下さい。

「親レコード」ということは、「子レコード」があると思われますが、文中にはでてきません。しかし、文意からは、「アイテム」が、子レコードとして使われているように思えます。
しかし、アイテムが持っているのは「項目」のようです。この項目とアイテム、レコードは、全て同じものを指しているのでしょうか?
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2008-11-07 09:41
想像力を働かせた予想ですが、
つまり聞きたい事って DataGridView の1行を1レコードと考えた時、
そのレコードの中でさらに行を分ける方法が無いか、って事なような気がします。

こんな感じで
http://www.grapecity.com/japan/images/powertools/dotnet/multirow_win5/TemplateDesinger.png

だとすると通常のコントロールでは出来ないんじゃありませんでしたっけ?
そういう時はサードパーティ製のコンポーネントを使うとかでは?

例えば上の画像の
http://www.grapecity.com/japan/support/database/P7_395.htm
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-11-07 09:57
グリッドとは違いますが、DataRepeater なんてものもあります。
動作イメージはこちら
M@RTIN
会議室デビュー日: 2003/01/23
投稿数: 3
投稿日時: 2008-11-07 10:23
Jitta 様

引用:

「レコード」「アイテム」「項目」の関係を明らかにして下さい。

「親レコード」ということは、「子レコード」があると思われますが、文中にはでてきません。しかし、文意からは、「アイテム」が、子レコードとして使われているように思えます。
しかし、アイテムが持っているのは「項目」のようです。この項目とアイテム、レコードは、全て同じものを指しているのでしょうか?



説明不足で申し訳ありませんでした。

 auctionテーブル(親)
  ・id
  ・取引状況
  ・出品者

 auction_itemテーブル
  ・親id (=auction::id)
  ・商品名
  ・落札日
  ・落札金額
  ・個数

ご覧の通りオークション管理用のDBです。
1人の出品者から同日中に複数の商品を
落札することがあるためこのような構成にしています。

auctionテーブルのレコードを表示する画面中で
関連した落札アイテム(auction_item)を単票形式のリストで
表示するのが今回の目的です。


King 様

正にご提案頂いた通りのことを実現しようとしています。
しかし。。。最初に記載し忘れていたのですが
自分用途の小規模な物なのでサードパーティ製品の購入は難しい状況です。。。


rain 様

引用:

グリッドとは違いますが、DataRepeater なんてものもあります。
動作イメージはこちら。



お知らせ頂いた参考サイトを拝見したところ
目的が実現できそうなのです。
早速これから試してみます。
M@RTIN
会議室デビュー日: 2003/01/23
投稿数: 3
投稿日時: 2008-11-07 11:18
結果報告です。

フォーム上にDataRepeaterコントロール(dataRepeater)を配置し、
下記のようにテストデータを与えた所、意図する通り動作しました。


DataTable dt = new DataTable();

dt.Columns.Add("日付", typeof(String));
dt.Columns.Add("商品名", typeof(String));
dt.Columns.Add("落札額", typeof(Int32));
dt.Columns.Add("個数", typeof(Int32));

dt.Rows.Add("2008/11/11", "商品1", 50000, 1);
dt.Rows.Add("2008/11/12", "商品2", 30000, 2);

this.auctionItemDateLabel.DataBindings.Add("Text", dt, "日付");
this.auctionItem商品名TextBox.DataBindings.Add("Text", dt, "商品名");
this.auctionItem落札額TextBox.DataBindings.Add("Text", dt, "落札額");
this.auctionItem個数TextBox.DataBindings.Add("Text", dt, "個数");

this.dataRepeater.DataSource = dt;

多くのご意見を頂き誠に有難うございました。
今後ともよろしくお願い致します。

[ メッセージ編集済み 編集者: M@RTIN 編集日時 2008-11-07 11:18 ]

[ メッセージ編集済み 編集者: M@RTIN 編集日時 2008-11-07 11:23 ]
1

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