所以我在一个名为dgAttributes的WinForms应用程序上有一个简单的Grid。我使用以下代码来设置列:
dgAttributes.Columns.Clear();
dgAttributes.Columns.Add("Path", "Path");
dgAttributes.Columns.Add("Parameter", "Parameter");
DataGridViewComboBoxColumn comboBoxColumn = new DataGridViewComboBoxColumn
{
HeaderText = "DataConnection",
Name = "DataConnection",
DisplayMember = "ConnectionName",
ValueMember = "ServerName",
DataSource = _dataConnections
};
dgAttributes.Columns.Add(comboBoxColumn);
dgAttributes.Columns.Add("Tag", "Tag");
_dataConnections变量包含DataConnections列表,并且始终至少填充一个有效实例。我希望ConnectionName显示在网格中。 DataConnection类如下所示:
public class DataConnection
{
public string ServerName;
public string UserName;
public string ConnectionName;
public override string ToString()
{
return ConnectionName;
}
}
但是当我尝试执行以下操作时:
DataConnection conn = _dataConnections.DefaultIfEmpty(_dataConnections.FirstOrDefault())
.FirstOrDefault(a => a.ConnectionName == point.DataConnection);
dgAttributes.Rows.Add(point.RelativePath, point.Element.Name, conn, point.Tag);
我在第二行说明:
,得到一个ArgumentException(没有InnerException)名为ConnectionName的字段不存在。
有人能告诉我我做错了什么吗?我认为这是非常明显的,但我似乎无法弄明白。我确实看了一些例子和其他帖子,但看起来我做的是正确的。
答案 0 :(得分:0)
事实证明,来自MSDN的信息应该非常字面地理解:
然后必须将DisplayMember属性设置为必需的属性 名称或列名。
这里的“property”是关键字。字段不起作用。因此,在将字符串字段更改为属性后,一切都很顺利。 我必须说Exception消息非常具有误导性。而且我希望这可以拯救某个人,某个地方,有点头疼。
答案 1 :(得分:0)
对我来说,将DatagridView的“ AutoSizeColumnsMode”值设置为“所有单元格”将给出此错误,并将值重新设置为“无”将解决此问题