Phi*_*ney 4 c# datagridview winforms datagridviewcomboboxcell
我在表单的事件处理程序中添加了一个DataGridViewComboBoxColumna DataGridView,Load并DataGridViewComboBoxCell在列中设置了每个的DataSource .但是,一旦显示表单,每个的DataSource DataGridViewComboBoxCell都已设置为null.这是我用来填充列及其单元格的代码:
DataGridViewComboBoxColumn comboCol;
comboCol = new DataGridViewComboBoxColumn();
comboCol.Name = "ComboCol";
comboCol.HeaderText = "Combo Column";
comboCol.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
this.dgv.Columns.Add(comboCol);
for (int i = 0; i < dgv.Rows.Count; i++)
{
// This datatable is actually populated here!
DataTable myData = PopulatedDataTable(dgv.Rows[i].Cells["info"].Value);
DataGridViewComboBoxCell DCC = new DataGridViewComboBoxCell();
DCC = (DataGridViewComboBoxCell)dgv.Rows[i].Cells["CombolCol"];
DCC.DataSource = myData;
DCC.DisplayMember = "Association"; // Association is a column in myData
DCC.ValueMember = "Association";
}
dgv.Columns["association"].Visible = false;
Run Code Online (Sandbox Code Playgroud)
如果我将它放在我单击表单加载后单击的按钮中,此代码完全符合预期,但在表单加载期间执行时,数据源将被清除.有什么建议?
我最终通过处理DataBindingCompletedatagrid 的事件来解决这个问题.
显然,当您在表单Load事件期间填充数据网格时,数据网格中的数据会反弹.这搞砸了我试图添加的未绑定列中的数据.
通过将我的代码放在DataBindingComplete事件处理程序上面(并在开始时禁用事件处理程序并在事件结束时重新启用它),在适当的时候添加列,并且.NET的愚蠢不会扰乱它们的数据.
| 归档时间: |
|
| 查看次数: |
4448 次 |
| 最近记录: |