C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: データテーブルのレコードをボタンに表示させる方法


(過去ログ 110 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■65157 / inTopicNo.1)  データテーブルのレコードをボタンに表示させる方法
  
□投稿者/ 震えるひよこ (1回)-(2013/02/08(Fri) 10:22:43)

分類:[C#] 

C# 2010 Expressを始めたばかりの初心者です。
MYSQLを使用し、データテーブルに読み込んだデータを
ボタンに表示させ、切り替えできるようにしたいです。

データテーブルのイメージは↓こんな感じです。
現在、comboboxで年月日を選択しdataGridViewに表示させています。

年月日    * 都道府県 * 市町村 * 住所 
***********************************************************
2013年1月21日 * 大阪 * ○○市 * ○○町○丁目・・・
2013年1月21日 * 大阪 * ○▲市 * ○▲町○丁目・・・
2013年1月21日 * 兵庫 * ○○市 * ○○町○丁目・・・
2013年1月21日 * 兵庫 * ○▲市 * ○▲町○丁目・・・
2013年1月21日 * 奈良 * ○○市 * ○○町○丁目・・・
2013年1月21日 * 奈良 * ○▲市 * ○▲町○丁目・・・
***********************************************************

今回したいことは、ボタンに都道府県を表示させたいです。

********** ********** **********
* 大阪 * * 兵庫 * * 奈良 *
********** ********** **********
↑      ↑      ↑
ボタン1 ボタン2 ボタン3


年月日によって都道府県の数が変わるので(最大3つ)
都道府県が2つしかない時はボタンも2つだけ表示させたい。
都道府県が1つしかない時はボタンも1つだけ表示させたい。

ボタン大阪を押すとdataGridViewに市町村・住所だけ
表示させたいのですが、今回はボタン表示の方法だけ
教えてもらいたいです。
(手順というかヒントだけでもアドバイス頂きたいです。)


まだ初めて1ヶ月くらいなので制御文なども勉強中です^^;
今回行いたい事は、どうすれば実現できるか知恵を
お貸しください。よろしくお願いいたしますm(_ _)m
引用返信 編集キー/
■65158 / inTopicNo.2)  Re[1]: データテーブルのレコードをボタンに表示させる方法
□投稿者/ 魔界の仮面弁士 (152回)-(2013/02/08(Fri) 10:38:53)
No65157 (震えるひよこ さん) に返信
> 今回したいことは、ボタンに都道府県を表示させたいです。
ComboBox (ドロップダウンリスト) では駄目なのでしょうか?

> 年月日によって都道府県の数が変わるので(最大3つ)
最大47個ではなく?

> 都道府県が2つしかない時はボタンも2つだけ表示させたい。
> 都道府県が1つしかない時はボタンも1つだけ表示させたい。
デザイン時に 3 つ並べておき、Visible を切り替えることで
表示/非表示を制御しては如何でしょう。
ボタンのタイトルは Text プロパティで書き換えられますよね。

> ボタン大阪を押すとdataGridViewに市町村・住所だけ
> 表示させたいのですが、
バインドしている DataSet/DataTable/DataView に対して、
RowFilter を設定すれば良いかと。
引用返信 編集キー/
■65161 / inTopicNo.3)  Re[2]: データテーブルのレコードをボタンに表示させる方法
□投稿者/ 震えるひよこ (3回)-(2013/02/08(Fri) 12:02:22)
No65158 (魔界の仮面弁士 さん) に返信

魔界の仮面弁士さん
アドバイスありがとうございます。
聞きたいことを少し、追加させてください。

> ComboBox (ドロップダウンリスト) では駄目なのでしょうか?

使用するのが事務員さんなので、視覚的にも分かりにくいと
言われたもので^^;

都道府県以外に、(書いてませんでしたが。すみません^^;)
商品名もボタンにしようと思っています。
商品名は10以上あり、ドロップダウンリスト3回選択ってのが
NGっぽいのです。

> デザイン時に 3 つ並べておき、Visible を切り替えることで
> 表示/非表示を制御しては如何でしょう。
> ボタンのタイトルは Text プロパティで書き換えられますよね。
なるほど〜うっすらですが分かりました。ありがとうございます。

> 最大47個ではなく?

営業所が現在3営業所なので3と書きましたが、
47個ではなく?と聞かれてハッとしました。
今後、営業所が増える可能性もなきにしもあらず・・・

その場合のことを考えたら
ボタン1〜10ほど並べておき

レコードが1の場合ボタン1だけ表示させ
ボタン2〜10はVisibleで非表示
レコードが2の場合ボタン1と2だけ表示させ
ボタン3〜10はVisibleで非表示で出来そうですが
レコードを表示させるボタンは1から順番に
使用するのには何を勉強すればいいですか?


> バインドしている DataSet/DataTable/DataView に対して、
> RowFilter を設定すれば良いかと。

いただいたアドバイスでRowFilterを駆け足で調べました。

そこで質問なんですが、
RowFilterだと「ボタン1は大阪」というふうに
固定されてしまいませんか?
ボタン1が大阪になったり京都になったりする場合も
RowFilterだけで実現可能でしょうか?

部品がどういう動きをするかまず知ることが必要なんですね。
VisibleとRowFilterについて、今から勉強します。
分かりにくくてすみませんが引き続き
アドバイスいただけたら幸いです。
引用返信 編集キー/
■65162 / inTopicNo.4)  Re[3]: データテーブルのレコードをボタンに表示させる方法
□投稿者/ ウィドゥ (1回)-(2013/02/08(Fri) 12:21:04)
回答ではないですが、
ComboBox (ドロップダウンリスト) がダメならば、リストボックスはどうですか?
わざわざドロップダウンしなくともあらかじめ候補が表示されているので見た目にも分かりやすいと思いますし、
対象のリスト行をクリック・ダブルクリックなどで処理すればよいかと。

あまりアプリ側で面倒な制御を行おうとすると、想定しない事態が発生する可能性を危惧します。
引用返信 編集キー/
■65167 / inTopicNo.5)  Re[3]: データテーブルのレコードをボタンに表示させる方法
□投稿者/ 魔界の仮面弁士 (153回)-(2013/02/08(Fri) 16:21:02)
No65161 (震えるひよこ さん) に返信
> RowFilterだと「ボタン1は大阪」というふうに
> 固定されてしまいませんか?
.Text が可変的であるように、RowFilter も変化するものとして
管理しておけば良いかと思います。

たとえばButton の Tag プロパティに条件式を入れておいて、
それを RowFilter にセットするようにするとか。
 void ButtonX_Click(object sender, EventArgs e)
 {
   〜.RowFilter = ((Button)sender).Tag as string;
 }


> ボタン1が大阪になったり京都になったりする場合も
> RowFilterだけで実現可能でしょうか?
応用すれば、AND 条件でも OR 条件でも作れると思います。


> レコードを表示させるボタンは1から順番に
> 使用するのには何を勉強すればいいですか?
……? すみません、質問の意味が読み取れませんでした。


> 今後、営業所が増える可能性もなきにしもあらず・・・
Button 系コントロール(Button, RadioButton, CheckBox)は、
個数が固定的な場合には有用かと思います。数個程度なら便利かと。

しかし、項目数が不定な場合は、ListBox や ComboBox の方が良いと思います。
Linq を使えば、営業所の一覧を ListBox / ComboBox に列挙することも容易です。

また、拠点数は多い物の、絞り込み条件として良く使う営業所が限られているような場合には、
良く使う条件のみをお気に入りボタンにし、あまり条件に挙がらない営業所は
ListBox や ComboBox で指定するというように、コントロールを併用する手もあります。

あるいは、google の検索ボックスなどのように、あいまい検索用の TextBox を
用意するといった手法もあります。

そのほか、タブコントロール という UI もあります。
Appearance を Buttons タイプにすると、電話帳のアカサタナ検索の
ボタンの代わりにも使えます。TabControl のボタンが多くなってきた場合は、
MultiLine 指定により、複数行またはスクロール表示での表示となりますが、
これも、数があまり多くなってくると使いにくいでしょう。

あとは、営業所が多岐にわたる場合、TreeView などを用いて
エリア→都道府県→市町村→ などと階層表示するケースもあります。


検索条件が多岐にわたり、一画面に納まらないような場合には、
検索指定のダイアログを、一覧表示の画面と分けて配置する場合もあるでしょう。
引用返信 編集キー/
■65175 / inTopicNo.6)  Re[4]: データテーブルのレコードをボタンに表示させる方法
□投稿者/ 震えるひよこ (4回)-(2013/02/11(Mon) 00:30:34)
ウィドゥさん 魔界の仮面弁士さん

お礼が遅くなり失礼しましたm(_ _)m
アドバイスありがとうございます。

本日までボタンと格闘してましたが。。。^^;
お二方のおっしゃるとおり

> 項目数が不定な場合は、ListBox や ComboBox の方が良いと思います。

今回はListBoxで表示させることで上手くいきました。
先輩の言うことは素直に聞くもんだなと実感しました^^;

また、やりたいことに対して
色んな方法があると教えていただいたことに感謝です。
自分も人に教えるまで行かなくても最善の方法を
早く分かるようになりたいです。

ほんとうに、ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -