0

それぞれがコンボボックスの2つの列を持つGridView1というデータグリッドビューがあります。最初のコンボボックスに基づいて、コンボボックスの1つのアイテムを変更できる必要があります。コンボボックスは動的に作成され、値は単一のデータセットにバインドされます。最初にフォームをロードするとすべてが完璧になりますが、最初のコンボボックスの値を変更すると、2番目のコンボボックスの値は変更されません。グリッドビューのEditingControlShowingイベントを試してから、 SelectedIndexChangedをコンボボックスに適用しましたが、まだわかりませんでした。

グリッド ビュー コンボボックス

DataGridViewComboBoxColumn seccol = new DataGridViewComboBoxColumn();
                    seccol.DataSource = semch.Tables["secall"];
                    seccol.Name = "SSSS";
                    seccol.DisplayMember = "SSSSNAME";
                    seccol.ValueMember = "SSSSID";
                    seccol.HeaderText = "SSSS";
                    seccol.DataPropertyName = "SSSSID";
                    seccol.DefaultCellStyle.Font = new Font("Microsoft Sans Serif", 10, FontStyle.Bold);
                    studpromo_gv.Columns.Add(seccol);
                    studpromo_gv.Columns["SEC"].DisplayIndex = 14;
                    studpromo_gv.Columns[14].HeaderCell.Style.BackColor = Color.LightSeaGreen;

EditingControlShowing イベント

ComboBox cb = e.Control as ComboBox;
            if (cb != null)
            {
                cb.SelectedIndexChanged -= new EventHandler(cb_SelectedIndexChanged);
                cb.SelectedIndexChanged += new EventHandler(cb_SelectedIndexChanged);
            }

更新されたコード

if (studpromo_gv.CurrentCell.ColumnIndex == 13)
            {
                ComboBox cmbBox = (ComboBox)sender;
                //int semx = Convert.ToInt32(cmbBox.SelectedValue);
                int semy = studpromo_gv.CurrentRow.Index;
                if (cmbBox != null)
                {
                    try
                    {
                        using (MySqlConnection conn = new MySqlConnection(MySQLconnection))
                        {
                            conn.Open();
                            MySqlDataAdapter secgvda = new MySqlDataAdapter("SELECT ID,NAME FROM STABLE WHERE SID='" + cmbBox.SelectedValue + "'", conn);
                            DataSet semch = new DataSet();
                            secgvda.Fill(semch, "secall");

                            (studpromo_gv[14, semy] as DataGridViewComboBoxCell).DataSource = semch.Tables["secall"];
                            (studpromo_gv[14, semy] as DataGridViewComboBoxCell).DisplayMember = "NAME";
                            (studpromo_gv[14, semy] as DataGridViewComboBoxCell).ValueMember = "ID";

                            conn.Close();
                            conn.Dispose();
                        }
                    }
                    catch (Exception)
                    {
                        //Some Statements
                    }
4

1 に答える 1

0

別のものを割り当てたいので、DataSourceそれを 2 番目の DataGridViewComboBox 列自体またはその特定のセルに追加することを選択できます。

RowIndex と ColumnIndex を知っているので、選択した最初の値に基づいて別の DataSource を設定できます。

(dataGridView1[0,0] as DataGridViewComboBoxCell).DataSource = list of states

編集

最初のアイテムを選択する必要があるため、これを追加できます。これは正常に機能するはずです

(studpromo_gv[14, semy] as DataGridViewComboBoxCell).Value = (studpromo_gv[14, semy] as DataGridViewComboBoxCell).Items[0]
于 2012-01-03T08:55:07.600 に答える