- - PR -
行が多段複数項目で構成されるリスト表示
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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 ] | ||||||||
|
投稿日時: 2008-11-07 07:10
「レコード」「アイテム」「項目」の関係を明らかにして下さい。 「親レコード」ということは、「子レコード」があると思われますが、文中にはでてきません。しかし、文意からは、「アイテム」が、子レコードとして使われているように思えます。 しかし、アイテムが持っているのは「項目」のようです。この項目とアイテム、レコードは、全て同じものを指しているのでしょうか? | ||||||||
|
投稿日時: 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 | ||||||||
|
投稿日時: 2008-11-07 09:57
グリッドとは違いますが、DataRepeater なんてものもあります。
動作イメージはこちら。 | ||||||||
|
投稿日時: 2008-11-07 10:23
Jitta 様
説明不足で申し訳ありませんでした。 auctionテーブル(親) ・id ・取引状況 ・出品者 auction_itemテーブル ・親id (=auction::id) ・商品名 ・落札日 ・落札金額 ・個数 ご覧の通りオークション管理用のDBです。 1人の出品者から同日中に複数の商品を 落札することがあるためこのような構成にしています。 auctionテーブルのレコードを表示する画面中で 関連した落札アイテム(auction_item)を単票形式のリストで 表示するのが今回の目的です。 King 様 正にご提案頂いた通りのことを実現しようとしています。 しかし。。。最初に記載し忘れていたのですが 自分用途の小規模な物なのでサードパーティ製品の購入は難しい状況です。。。 rain 様
お知らせ頂いた参考サイトを拝見したところ 目的が実現できそうなのです。 早速これから試してみます。 | ||||||||
|
投稿日時: 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