System.Data.DataRowView, c # - PullRequest
       3

System.Data.DataRowView, c #

2 голосов
/ 09 января 2012

У меня проблема:

SqlDataAdapter da = new SqlDataAdapter("SELECT dbo.User.name FROM dbo.User", con);
DataTable dt = new DataTable();
comboBox1.DataSource = dt;
da.Fill(dt);

Возвращено System.Data.DataRowView в каждом ряду.

Я пытался:

comboBox1.ValueMember = "idUser";
comboBox1.DisplayMember = "dbo.User.name"

и я получаю ошибку:

Невозможно выполнить привязку к новому элементу отображения. Имя параметра: newDisplayMember

Я хочу получить idUser и name. Спасибо

Ответы [ 2 ]

4 голосов
/ 09 января 2012

Пожалуйста, используйте ниже

SqlDataAdapter da = new SqlDataAdapter("SELECT IDUser, Name FROM dbo.User", con); 
DataTable dt = new DataTable();  
da.Fill(dt);  
comboBox1.DataSource = dt; 
comboBox1.ValueMember = "IDUser";   
comboBox1.DisplayMember = "Name"; 
4 голосов
/ 09 января 2012

Вам необходимо вернуть идентификатор в операторе SELECT и назначить таблицу данных в качестве источника данных после заполнения таблицы данных:

 SqlDataAdapter da = new SqlDataAdapter("SELECT IDUser, Name FROM dbo.User", con);
 DataTable dt = new DataTable();
 da.Fill(dt); 

Затем вы можете настроить ComboBox следующим образом:

comboBox1.DataSource = dt.DefaultView;
comboBox1.ValueMember = "IDUser";
comboBox1.DisplayMember = "Name"

UPDATE

Если вы хотите получить доступ к выделенному тексту или значению элемента, выбранного в ComboBox, вам нужно будет сделать что-то вроде:

DataRowView drvItem = comboBox1.SelectedItem as DataRowView;

if (drvItem != null)
{
    label4.Text = drvItem["ID"].ToString();
    label3.Text = drvItem["Name"].ToString();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...