2010-11-05 81 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语句返回的结果集不同的字段名。请检查字段名称。