【问题标题】:Setting DataGridViewComboBoxColumn.Valuemember to a list<string>将 DataGridViewComboBoxColumn.Valuemember 设置为列表<string>
【发布时间】:2013-12-07 08:01:56
【问题描述】:

我想知道是否可以直接从字符串列表中设置 DataGridViewComboBoxColumn 的 ValueMember 属性。

例如

List<string> productNames = new List<string>();

List<Products.Product> t = new List<Products.Product>();

foreach (var p in products)
{
     var x = p.Product;

     itemListing = x;

     foreach (var pn in x)
     {
         productNames.Add(pn.name);
     }
}
.............

// set values to combobox column cells in datagridview
GridSellProducts.Rows.Add();
DataGridViewComboBoxColumn cmbItems = (DataGridViewComboBoxColumn)GridSellProducts.Columns["Item"];

cmbItems.DataSource = productNames;
cmbItems.DisplayMember = cmbItems.ValueMember;
cmbItems.ValueMember = // code to put here  
cmbItems.AutoComplete = true;

没有完全理解http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcomboboxcolumn.datasource.aspx中的示例

如何设置cmbItems.ValueMember

【问题讨论】:

  • 每个项目都是一个string,因此您无需指定任何DisplayMemberValueMember。这里只有一个属性可用,它是 Length 属性。
  • 请仅显示相关代码。它使我们更容易调试。

标签: c# winforms datagridviewcolumn


【解决方案1】:

我认为你应该这样做:

cmbItems.DataSource = products;
cmbItems.DisplayMember = cmbItems.ValueMember = "name";

现在,每个项目都是一个Product,并带有一个名为name 的属性。在您的旧代码中,它只是一个字符串,因此 DisplayMember 和 ValueMember 唯一可能的属性是 Length,但我认为在这种情况下它不相关且毫无意义。

【讨论】:

  • 感谢您的回复。当我将成员等同于“名称”时,我收到错误“名为名称的字段不存在。”
  • @KinyanjuiKamau 是不是你的Product 类有一个属性name?请记住,您必须定义一些名为name 或更好的名称Name 的属性。
猜你喜欢
  • 1970-01-01
  • 2022-01-02
  • 1970-01-01
  • 2013-06-20
  • 2018-03-22
  • 2016-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多