c# – 如何在DataGridViewComboBoxCell中选择一个值?
我有DataGridViewComboBoxCell和DataTable.表I中的数据使用DataSource与DataGridViewComboBoxCell绑定,并设置ValueMember和DisplayMember.
private void Form1_Load(object sender,EventArgs e) { DataGridViewComboBoxCell comboBoxCell = new DataGridViewComboBoxCell(); dataGridView1.Rows[0].Cells[0] = comboBoxCell; comboBoxCell.DataSource = dataTable; comboBoxCell.ValueMember = "ID"; comboBoxCell.DisplayMember = "Item"; } 如何在表单加载时以编程方式设置单元格中的值? private void dataGridView1_CellFormatting(object sender,DataGridViewCellFormattingEventArgs e) { e.Value = 1; } 它在单元格中设置了一个新值,但我需要选择一个值. 表单已加载,我有空单元格. 还有ComboBox中的一些数据. 当我把这个代码dataGridView1.Rows [0] .Cells [“ComboColumn”].值=“1”;在comboBoxCell.DisplayMember = …(见上文)之后,它运行正常. ID列中的值“1”对应于Items列中的值“Second”.因此,我得到了正确的结果. 抱歉我的英文和我的新手代码:) 解决方法
不是向网格添加单元格而是添加DataGridViewComboBox列.
DataGridViewComboBoxColumn c = new DataGridViewComboBoxColumn(); c.Name = "ComboColumn"; c.DataSource = dataTable; c.ValueMember = "ID"; c.DisplayMember = "Item"; dataGridView1.Columns.Add(c); 要选择特定值,请设置给定单元格的Value属性. dataGridView1.Rows[rowIndexYouWant].Cells["ComboColumn"].Value = 1; >请注意,这里的类型很重要!在评论中,你说你得到一个System.FormatException.这可能是由于将错误的类型设置为值而引起的. 当您将值设置为1时,您将分配一个int – 如果由于某种原因,您在ID列中有字符串,您将获得您看到的System.FormatException异常. 如果类型不同,则需要更新DataTable定义或将值设置为字符串: dataGridView1.Rows[rowIndexYouWant].Cells["ComboColumn"].Value = "1"; >另请注意,此值必须存在于已设置为网格源的DataTable的ID列中. 当DataGridView设置了DataSource时,通常最容易使用它.在这种情况下,您可以使用DataPropertyName属性将ComboBoxColumn绑定到网格的DataSource. c.DataPropertyName = "GridDataSourceColumnName"; 这允许从网格数据源获取列值,并允许更改列以直接更改该数据源. 最后,不要在此处使用CellFormatting事件 – 此事件不适用于此类用途.通常最好在DataBindingComplete事件中执行此类工作(如果您只需要执行一次),或者在需要DefaultValues或RowValidating之类的某些事件中执行此类工作. 通过使用CellFormatting,您可能无法手动编辑组合框. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |