【问题标题】:c# datasource is returning System.Data.DataRowViewc# 数据源正在返回 System.Data.DataRowView
【发布时间】:2010-11-05 16:13:20
【问题描述】:

我有一个组合框 cbAnalytes:

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

有谁知道我做错了什么?

【问题讨论】:

    标签: c# .net data-binding


    【解决方案1】:

    您将DisplayMemberValueMember 属性设置为什么?您需要为您的组合框设置这些属性,以便它知道要显示什么。

    【讨论】:

      【解决方案2】:

      对于 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
      

      【讨论】:

      • 我希望它显示查询结果
      【解决方案3】:

      您是否将 Combobox 的 DisplayMember 和 ValueMember 属性设置为 text 和 id 列?

      http://www.codeproject.com/KB/database/scomlistcontrolbinding.aspx

      【讨论】:

        【解决方案4】:

        简而言之,您需要将组合框的显示项目属性(DisplayMember 和 ValueMember,如 @AJ 所述)绑定到您的 DataTable 行的 属性(即您希望组合框具有的列)利用)。目前,它正在盲目地尝试将提供的对象显示为 cbo 的数据源。它通过调用 object.ToString() 来实现这一点,除非被覆盖,否则它往往会返回类型的名称。

        【讨论】:

          【解决方案5】:

          您的组合框应该与此类似

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

          【讨论】:

            【解决方案6】:

            您可以指定与数据适配器/读取器或 select 语句返回的结果集不同的字段名称。请检查字段名称。

            【讨论】:

              猜你喜欢
              • 2019-07-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-03-08
              相关资源
              最近更新 更多