我想知道如何设置DataGridViewComboBox单元格的值。我已经将DataGridViewComboBox与DataSource绑定了。但是我想为这个数据源设置新的值。
到目前为止,这就是我所拥有的:
gvList.Rows[0].Cells[0].value = "Select";但是它抛出一个错误:格式异常: DataGridViewComboBox单元格值是无效的。
我如何才能做到这一点而没有错误?
发布于 2011-05-12 11:03:10
错误是由于您已经将DataSource绑定到ComboBox列,并且在分配Select时,也要尝试在DataSource中找到相同的位置。最好的方法是将相同的内容添加到绑定到DataSource列的原始ComboBox中。
发布于 2011-05-12 10:41:55
造成问题的根本原因是组合框值列表中不存在"Select“值。您需要将其添加到列的数据源中,或者添加到单个单元格的组合框的数据源中(使用该单元格的编辑控件)。
下面是一些关于设置所选项目的值的更多解释,我将保留它,因为您可能会发现它很有用。
设置DataGridViewComboBoxColumn值有两种基本方法。要么使用数据绑定,要么直接设置值。
听起来你想直接设置,所以我先解释一下,然后在下面用数据库来完成答案。
以下列人为的例子为例:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
BindingList<User> users = new BindingList<User> { new User() { UserName = "Fred", userid = 2 } };
IList<MyValue> values = new List<MyValue> { new MyValue{id = 1, name="Fred"}, new MyValue{id = 2, name="Tom"}};
dataGridView1.DataSource = users;
DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
col.DataSource = values;
col.DisplayMember = "name";
col.DataPropertyName = "userid";
col.ValueMember = "id";
dataGridView1.Columns.Add(col);
}
}
public class MyValue
{
public int id { get; set; }
public string name { get; set; }
}
public class User
{
public string UserName { get; set; }
public int userid {get;set;}
}在本例中,我将ValueMember属性设置为" id“,它引用了ComboBox绑定到的列表中的属性名称id。
因此,我所需要做的就是做以下工作(在这里,我确信我的行和单元格索引是正确的-您应该编写代码来检查):
dataGridView1.Rows[0].Cells[2].Value = 1;现在,在我的示例中,这是因为我的ValueMember被设置为" id“属性(它是一个整数),如果id是字符串属性,则需要设置如下值:
dataGridView1.Rows[0].Cells[2].Value = "1";(实际上刚刚尝试过,它使用隐式强制转换进行管理)
当然,我想确保列表中的值实际上是"1“。
以上几行是错误的直接原因--将值提供给组合框的列表不包含“选择”值。
要使用绑定设置值,您需要告诉ComboBoxColumn它在DataGridView数据源中绑定的对象是什么。
我将DataPropertyName的ComboBoxColumn设置为绑定DataGridView的类的属性的名称。
发布于 2011-05-12 10:43:11
有一种方法可以设置值,但如果设置了DataSource,则不允许设置它。
DataGridViewComboBoxCell cell =(DataGridViewComboBoxCell)gvList.Rows[0].Cells[0];
cell.Items[0] = "Select";https://stackoverflow.com/questions/5976511
复制相似问题