首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将值设置为DataGridViewComboBox列?

如何将值设置为DataGridViewComboBox列?
EN

Stack Overflow用户
提问于 2011-05-12 10:16:59
回答 5查看 54.1K关注 0票数 8

我想知道如何设置DataGridViewComboBox单元格的值。我已经将DataGridViewComboBox与DataSource绑定了。但是我想为这个数据源设置新的值。

到目前为止,这就是我所拥有的:

代码语言:javascript
复制
gvList.Rows[0].Cells[0].value = "Select";

但是它抛出一个错误:格式异常: DataGridViewComboBox单元格值是无效的

我如何才能做到这一点而没有错误?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-05-12 11:03:10

错误是由于您已经将DataSource绑定到ComboBox列,并且在分配Select时,也要尝试在DataSource中找到相同的位置。最好的方法是将相同的内容添加到绑定到DataSource列的原始ComboBox中。

票数 3
EN

Stack Overflow用户

发布于 2011-05-12 10:41:55

造成问题的根本原因是组合框值列表中不存在"Select“值。您需要将其添加到列的数据源中,或者添加到单个单元格的组合框的数据源中(使用该单元格的编辑控件)。

下面是一些关于设置所选项目的值的更多解释,我将保留它,因为您可能会发现它很有用。

设置DataGridViewComboBoxColumn值有两种基本方法。要么使用数据绑定,要么直接设置值。

听起来你想直接设置,所以我先解释一下,然后在下面用数据库来完成答案。

以下列人为的例子为例:

代码语言:javascript
复制
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。

因此,我所需要做的就是做以下工作(在这里,我确信我的行和单元格索引是正确的-您应该编写代码来检查):

代码语言:javascript
复制
dataGridView1.Rows[0].Cells[2].Value = 1;

现在,在我的示例中,这是因为我的ValueMember被设置为" id“属性(它是一个整数),如果id是字符串属性,则需要设置如下值:

代码语言:javascript
复制
dataGridView1.Rows[0].Cells[2].Value = "1";

(实际上刚刚尝试过,它使用隐式强制转换进行管理)

当然,我想确保列表中的值实际上是"1“。

以上几行是错误的直接原因--将值提供给组合框的列表不包含“选择”值。

要使用绑定设置值,您需要告诉ComboBoxColumn它在DataGridView数据源中绑定的对象是什么。

我将DataPropertyName的ComboBoxColumn设置为绑定DataGridView的类的属性的名称。

票数 18
EN

Stack Overflow用户

发布于 2011-05-12 10:43:11

有一种方法可以设置值,但如果设置了DataSource,则不允许设置它。

代码语言:javascript
复制
DataGridViewComboBoxCell cell =(DataGridViewComboBoxCell)gvList.Rows[0].Cells[0];
cell.Items[0] = "Select";
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5976511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档