質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

2回答

6772閲覧

【C#】コンボボックスで、IDか名前で検索できるようにしたい。

Satochan24

総合スコア113

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

1クリップ

投稿2015/08/31 08:54

プロジェクト名が一覧表示されるコンボボックスで、2000件
くらいまで増えてしまったので、検索機能をつけたいと思っています。
ID(int型)とプロジェクト名の2つで検索できるようにしたいのですが、
テキストボックスからの入力値を取得して、特定のプロジェクトを
List<Project>型(Projectクラスのメンバーは、IDやNameなど)の変数、resultProjects_2に格納するところまではいきました。

しかし、そのあと、特定の行をコンボボックスに表示させる処理で
悩んでいます。
何か方法があるはずだとは思うのですが、なかなか見つかりません。
詳しい方がいれば教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tak1wa

2015/08/31 09:40

コンボボックスへ表示させるデータはどのように生成してますか?DataTableに格納してバインドですか?
Satochan24

2015/09/01 02:43

えっと~、CreateProjectComboBoxというメソッドで表示されるデータが作成されています。 その中身は…完全に解読できたわけではないですが、 元々のデータベースがMySQLでサーバ上にあって、そのデータをXML形式で取得して、 そこからコンボボックスに必要なデータを作成しているようです。 こんな回答で宜しかったでしょうか?
guest

回答2

0

自己解決

すみません。一応、解決しました。
こんな感じで書いて、IDについてはOK、名前についてはあいまい検索ができず考え中ですが、正確に入力すれば検索できました。(合致したプロジェクト名しか表示されませんが…)

resultProjects = projects.Where(pro => pro.Project_id == Convert.ToInt32(id_textBox.Text)).ToList();

foreach (var project in resultProjects)
{
comboBox_Project.Items.Add(project.Name);

}
this.comboBox_Project.SelectedIndex = 0;

投稿2015/09/01 07:53

Satochan24

総合スコア113

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんにちは。

カスタムクラスのバインドかDataTableのバインドかによって変わりますが、
もっとも簡単なのはDataViewをバインドさせてフィルタリングをかけることです。

C#

1public Form1() 2{ 3 InitializeComponent(); 4 5 DataTable dt = new DataTable(); 6 dt.Columns.Add("ID"); 7 dt.Columns.Add("Name"); 8 dt.Rows.Add("1", "Hoge1"); 9 dt.Rows.Add("2", "Hoge2"); 10 dt.Rows.Add("3", "Hoge3"); 11 dt.Rows.Add("4", "Hoge4"); 12 dt.Rows.Add("5", "Hoge5"); 13 dv = new DataView(dt); 14 comboBox1.ValueMember = "ID"; 15 comboBox1.DisplayMember = "Name"; 16 comboBox1.DataSource = dv; 17} 18 19private DataView dv = null; 20 21private void textBox1_TextChanged(object sender, EventArgs e) 22{ 23 if (dv != null && !string.IsNullOrEmpty(textBox1.Text)) 24 { 25 dv.RowFilter = string.Format("ID = '{0}'", textBox1.Text); 26 } 27}

投稿2015/08/31 09:59

Tak1wa

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Satochan24

2015/09/01 01:19

回答有難うございます。元データを作成した方が別の人ですので、とりあえずバインド?についても確認してみます。またコメントします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問