источник данных c # возвращает System.Data.DataRowView - PullRequest
4 голосов
/ 05 ноября 2010

У меня есть выпадающий список 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

кто-нибудь знает, что я делаю не так?

Ответы [ 6 ]

14 голосов
/ 05 ноября 2010

Для чего вы устанавливаете атрибуты DisplayMember и ValueMember? Вам нужно установить эти свойства для вашего комбинированного списка, чтобы он знал, что отображать.

1 голос
/ 05 ноября 2010

Вкратце, вам нужно привязать отображаемые свойства элемента (DisplayMember и ValueMember, как упомянуто @AJ) комбинированного списка к свойствам строк вашего DataTable (т. Е. Столбцов, которые вы хотите использовать в комбинированном списке)).В настоящее время он слепо пытается отобразить объект, предоставляемый в качестве источника данных cbo.Это делается путем вызова object.ToString(), который, если не переопределен, имеет тенденцию возвращать имя типа.

1 голос
/ 05 ноября 2010

Вы установили в свойствах Combobox DisplayMember и ValueMember столбцы text и id?

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

1 голос
/ 05 ноября 2010

для ASP.net:

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

Для Windows Forms:

cbAnalytes.DisplayMember = "ColumnName";
cbAnalytes.ValueMember = "ColumnName"; // don't set this if you want the Value to be the DatRowView itself
0 голосов
/ 12 февраля 2016

Вы можете назначить имена полей, которые отличаются от результирующего набора, возвращаемого адаптером / считывателем данных или оператором выбора.Просьба проверить имена полей.

0 голосов
/ 05 ноября 2010

ваше поле со списком должно выглядеть примерно так:

<cc1:ComboBox 
            ID="cbAnalytes" 
            DataTextField="DATAROWPROPERTYHERE" 
            DataValueField="DATAROWPROPERTYHERE" 
            runat="server" >
</cc1:ComboBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...