在数据绑定时检索 datagridviewcombobox 后面的数据行

发布于 2024-12-10 07:12:28 字数 364 浏览 0 评论 0原文

我有一个数据绑定 DataGridView。它的列之一是 DataGridViewComboBox。 DataGridViewComboBox 也是数据绑定的。一切工作正常,直到我希望检索 DataGridViewComboBox 所选项目后面的 DataRow(不是 DataGridView 的 DataRow,而是填充组合框的 DisplayMember 和 ValueMember 的数据行!)。

我怎样才能做到这一点?我需要这个,因为我需要在 DisplayMember 和 ValueMember 旁边显示一大堆数据,并且这些数据存在于 DataGridViewComboBox 绑定到的 DataTable 的数据行内。

感谢您提前提供的帮助。

丹尼尔

I have a databound DataGridView. One of its columns is DataGridViewComboBox. The DataGridViewComboBox is also databound. Everything is working just fine until I wish to retrieve the DataRow behind the DataGridViewComboBox selected item (not the DataRow of the DataGridView but the datarow that fills the combobox's DisplayMember and ValueMember!).

How can I accomplish this? I need this because I need to display a whole bunch of data beside DisplayMember and ValueMember and this data is present inside the datarow of the DataTable to which the DataGridViewComboBox is bound.

Thanks for your kind help in advance.

Daniel

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

携君以终年 2024-12-17 07:12:28

这篇 MSDN 文章对此进行了详细介绍。

您需要做的是将 ComboBox 列的 ValueMember 设置为返回对业务对象本身的引用的属性。

也就是说,假设您有一个 Employee 对象,并且它们的列表是 ComboBox 列的数据源。 Employee 可能看起来像这样:

public Employee
{
    int Age { get; set; }
    string Name { get; set;}
    Employee Self
    {
        get { return this; }
    }
} 

然后您像这样创建 ComboBox 列:

DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
col.Name = "Combo";
col.ValueMember = "Self";
col.DisplayMember = "Name";
datagridview1.Columns.Add(col);

然后,当您检索 ComboBox 单元格的 Value 属性时,您会得到一个 Employee 对象:

Employee e = datagridview1.Rows[0].Cells["Combo"].Value as Employee;

This is detailed in this MSDN article.

What you need to do is set the ValueMember of the ComboBox column to a property that returns a reference to the business object itself.

That is, say you have an Employee object, and a list of them are the DataSource for the ComboBox column. Employee would perhaps look like this:

public Employee
{
    int Age { get; set; }
    string Name { get; set;}
    Employee Self
    {
        get { return this; }
    }
} 

Then you create your ComboBox columns like so:

DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
col.Name = "Combo";
col.ValueMember = "Self";
col.DisplayMember = "Name";
datagridview1.Columns.Add(col);

Then when you retrieve the Value property of a ComboBox cell you get an Employee object back:

Employee e = datagridview1.Rows[0].Cells["Combo"].Value as Employee;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文