2010-11-05 79 views
4

我有一個組合框cbAnalytes:C#中的數據源將返回System.Data.DataRowView

cbAnalytes.DataSource = ConnectandReadList(qcvalues_query); 

其中ConnectandReadList是:

public DataTable ConnectandReadList(string query) 
{ 
    DataTable ds = new DataTable(); 
    string connection_string = "Data Source=hermes;database=qcvalues; Integrated Security=SSPI;"; 
    using (var myConnection = new SqlConnection(connection_string)) 
    { 
     myConnection.Open(); 
     var command = new SqlCommand(query, myConnection); 
     var adapter = new SqlDataAdapter(command); 
     adapter.Fill(ds); 
    } 
    return ds; 
} 

由於某種原因,填充組合框與:

System.Data.DataRowView 
System.Data.DataRowView 
System.Data.DataRowView 
System.Data.DataRowView 
System.Data.DataRowView 

有人知道我在做什麼錯嗎?

回答

14

什麼是你設置你DisplayMemberValueMember屬性?您需要爲組合框設置這些屬性才能知道要顯示的內容。

+0

@aj非常感謝我得到它! – 2010-11-05 16:18:13

1

對於ASP.net:

cbAnalytes.DataValueField = "ColumnName"; 
cbAnalytes.DataTextField = "ColumnName"; 

對於Windows窗體:

cbAnalytes.DisplayMember = "ColumnName"; 
cbAnalytes.ValueMember = "ColumnName"; // don't set this if you want the Value to be the DatRowView itself 
+0

我希望它顯示查詢結果 – 2010-11-05 16:16:42

1

總之,你需要的組合框的顯示項屬性(DisplayMember和ValueMember,如@AJ提及)結合的您的DataTable的行屬性(即列你想擁有組合框使用)。目前,它一味地試圖顯示作爲cbo的數據源提供的對象。它通過調用object.ToString()來做到這一點,除非被覆蓋,否則往往會返回該類型的名稱。

0

您的組合框應類似於此

<cc1:ComboBox 
      ID="cbAnalytes" 
      DataTextField="DATAROWPROPERTYHERE" 
      DataValueField="DATAROWPROPERTYHERE" 
      runat="server" > 
</cc1:ComboBox> 
0

您可以指定它們是由數據適配器/讀卡器或SELECT語句返回的結果集不同的字段名。請檢查字段名稱。