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

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

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

DataGridViewでコンボボックスを連動させたい

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

■102832 / inTopicNo.1)  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行目はカタカナが選択された状態にしたいのですがやり方が解らず困っています。


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




引用返信 編集キー/
■102859 / inTopicNo.2)  Re[1]: DataGridViewでコンボボックスを連動させたい
□投稿者/ WebSurfer (2879回)-(2024/01/17(Wed) 09:15:13)
No102832 (Y.M さん) に返信

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

DataGridView の使い方として、

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

というようなことをするのは考えにくいのですが。 そういう部分的なことだけでなくて、全体的
にやりたいことのストーリーとかを書くことはできませんか?
引用返信 編集キー/
■102860 / inTopicNo.3)  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つを示すようにすれば
目的の動作になるのではないかと思います。
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ