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

わんくま同盟

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

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

ツリー一括表示

DataGridViewでコンボボックスを連動させたい /Y.M (24/01/13(Sat) 19:51) #102832
Re[1]: DataGridViewでコンボボックスを連動させたい /WebSurfer (24/01/17(Wed) 09:15) #102859
Re[1]: DataGridViewでコンボボックスを連動させたい /kiku (24/01/17(Wed) 10:46) #102860


親記事 / ▼[ 102859 ] ▼[ 102860 ]
■102832 / 親階層)  DataGridViewでコンボボックスを連動させたい
□投稿者/ Y.M (16回)-(2024/01/13(Sat) 19:51:02)

分類:[C#] 


言語:VS2022 C#
フレームワーク:Framework 4.7.2
OS:Windows10
WinForms

DataGridViewで1列目のコンボボックスに、ひらがなを選択したら、
2列目のコンボボックスで、「あいうえお」「かきくけこ」…と選択できて
1列目のコンボボックスに、カタカナを選択したら、
2列目のコンボボックスで、「アイウエオ」「カキクケコ」…と選択できるようにしたくて
下記のようなソースを書きました。

DataGridViewComboBoxColumn dgvCombo3 = new DataGridViewComboBoxColumn();
DataGridViewComboBoxColumn dgvCombo4 = new DataGridViewComboBoxColumn();


private void Form1_Load(object sender, EventArgs e)
{
      DataTable dtTest = new DataTable();
    DataRow dr;
    dtTest.Columns.Add("Division_ID");
    dtTest.Columns.Add("Division_NM");

    dr = dtTest.NewRow();
    dr["Division_ID"] = 1;
    dr["Division_NM"] = "ひらがな";
    dtTest.Rows.Add(dr);

    dr = dtTest.NewRow();
    dr["Division_ID"] = 2;
    dr["Division_NM"] = "カタカナ";
    dtTest.Rows.Add(dr);

    Column12.DataSource = dtTest;
    Column12.DisplayMember = "Division_NM";
    Column12.ValueMember = "Division_ID";

    }


private void dataGridView2_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 2)
{
if ((dataGridView2.Rows[e.RowIndex].Cells["Column12"].Value == null) ||(string.IsNullOrEmpty(dataGridView2.Rows[e.RowIndex].Cells["Column12"].Value.ToString())))
{
}
else
{
DataTable dtTest = new DataTable();
DataRow dr;
dtTest.Columns.Add("Division_ID");
dtTest.Columns.Add("Division_NM");

dr = dtTest.NewRow();

if (dataGridView2.Rows[e.RowIndex].Cells["Column12"].Value.ToString() == "1")
{
dr["Division_ID"] = 1;
dr["Division_NM"] = "あいうえお";
dtTest.Rows.Add(dr);

dr = dtTest.NewRow();
dr["Division_ID"] = 2;
dr["Division_NM"] = "かきくけこ";
dtTest.Rows.Add(dr);

dr = dtTest.NewRow();
dr["Division_ID"] = 3;
dr["Division_NM"] = "さしすせそ";
dtTest.Rows.Add(dr);

}
else
{
dr["Division_ID"] = 1;
dr["Division_NM"] = "アイウエオ";
dtTest.Rows.Add(dr);

dr = dtTest.NewRow();
dr["Division_ID"] = 2;
dr["Division_NM"] = "カキクケコ";
dtTest.Rows.Add(dr);

dr = dtTest.NewRow();
dr["Division_ID"] = 3;
dr["Division_NM"] = "サシスセソ";
dtTest.Rows.Add(dr);

}

Column13.DataSource = dtTest;
Column13.DisplayMember = "Division_NM";
Column13.ValueMember = "Division_ID";

}

}
}

実行すると、1行目の1列目でひらがなを選択すると2列目の表示が「あいうえお」「かきくけこ」になり、
2行目の1列目でカタカナを選択し、2列目の表示が「アイウエオ」「カキクケコ」となりますが、
3行目になると、1行目と2行目の2列目がカタカナ表示になってしまいます。

それを、1行目はひらがなで、2行目はカタカナが選択された状態にしたいのですがやり方が解らず困っています。


どなたかゆう認識者の方よろしくお願いします




[ □ Tree ] 返信 編集キー/

▲[ 102832 ] / 返信無し
■102859 / 1階層)  Re[1]: DataGridViewでコンボボックスを連動させたい
□投稿者/ WebSurfer (2879回)-(2024/01/17(Wed) 09:15:13)
No102832 (Y.M さん) に返信

そもそも何がしたいのでしょう。XY 問題になってませんか?

DataGridView の使い方として、

> DataGridViewで1列目のコンボボックスに、ひらがなを選択したら、
> 2列目のコンボボックスで、「あいうえお」「かきくけこ」…と選択できて
> 1列目のコンボボックスに、カタカナを選択したら、
> 2列目のコンボボックスで、「アイウエオ」「カキクケコ」…と選択できるようにしたくて

というようなことをするのは考えにくいのですが。 そういう部分的なことだけでなくて、全体的
にやりたいことのストーリーとかを書くことはできませんか?
[ 親 102832 / □ Tree ] 返信 編集キー/

▲[ 102832 ] / 返信無し
■102860 / 1階層)  Re[1]: DataGridViewでコンボボックスを連動させたい
□投稿者/ kiku (395回)-(2024/01/17(Wed) 10:46:29)
No102832 (Y.M さん) に返信
> Column13.DataSource = dtTest;
> Column13.DisplayMember = "Division_NM";
> Column13.ValueMember = "Division_ID";

上記のColumn13は、おそらく、列2の全部(列2のすべての行)を示していると思われます。
そうではなく、該当のセル1つを示すようにすれば
目的の動作になるのではないかと思います。
[ 親 102832 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -