gpt4 book ai didi

c# - 如何为 DataGridViewComboBox 列设置值?

转载 作者:太空狗 更新时间:2023-10-29 18:05:35 25 4
gpt4 key购买 nike

我想知道如何设置 DataGridViewComboBox 单元格的值。我已经将 DataGridViewComboBox 与 DataSource 绑定(bind)在一起。但我想为此数据源设置新值。

这是我目前所拥有的:

gvList.Rows[0].Cells[0].value = "Select";

但它会抛出一条错误消息:Format Exception: DataGridViewComboBox Cell value is not valid

我怎样才能做到这一点而不会出错?

最佳答案

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

下面是关于设置所选项目的值的更多说明,我将离开,因为您可能会发现它很有用。

有两种基本方法可以设置 DataGridViewComboBoxColumn 的值。您要么使用数据绑定(bind),要么直接设置值。

听起来你是在尝试直接设置,所以我会先解释一下,然后在下面用数据绑定(bind)来完成答案。

以下面人为的例子为例:

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 绑定(bind)到的列表中的属性名称 id。

所以我需要做的就是以下(我确信我的行和单元格索引是正确的 - 你应该编写代码来检查):

dataGridView1.Rows[0].Cells[2].Value = 1;

现在,在我的示例中,这是可行的,因为我的 ValueMember 设置为我的“id”属性,它是一个整数,如果 id 是一个字符串属性,我需要像这样设置值:

dataGridView1.Rows[0].Cells[2].Value = "1";

(实际上只是尝试了这个并且它通过隐式转换进行管理)

当然,我想确保我的列表中确实有一个值“1”。

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

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

我已将 ComboBoxColumn 的 DataPropertyName 设置为 DataGridView 所绑定(bind)的类的属性名称。

关于c# - 如何为 DataGridViewComboBox 列设置值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5976511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com