2014-02-05 14 views
0

因此,我在WinForms應用程序中調用了一個簡單的網格,名爲dgAttributes。我使用下面的代碼來設置列:ArgumentException當使用DataGridViewComboBoxColumn向網格添加行時

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

原來從MSDN的信息應採取字面意思:

然後將DisplayMember屬性必須設置必要的財產 名或列名。

其中「屬性」是關鍵字在這裏。字段不起作用。因此,在將字符串字段更改爲屬性後,一切都很順利。 我必須說異常消息是非常令人迷惑的。我希望這可以拯救某個人,在某個地方,某個頭部受傷。

(來源:http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcomboboxcolumn.displaymember%28v=vs.110%29.aspx

相關問題