2013-07-14 3 views
1

Все, что я получаю, это пустой списокBox при извлечении данных из DataSet. Heres код:Как получить данные из DataSet в ListBox?

DataSet dt_product = dBCommand.ExecuteNonQuery("SELECT * FROM PRODUCT"); 

listBx_prod.DataSource=dt_product.Tables[0].Columns[1].ExtendedProperties.Cast<DataRow>().ToList();  

Я отлаживал и мой DataSet успешно извлекал данные из базы данных. Где я ошибаюсь?

+0

Пока я не знаю, что вы не можете бросить т.е. ToList() для одного столбца .. – Bhavik

+0

'ExecuteNonQuery' возвращается 'int', а не' DataSet'. – Dennis

+0

@ Bhavik: Я хочу показать только один столбец в своем списке из набора данных. Есть ли какая-нибудь другая работа для достижения этого? – Sadiq

ответ

2

Я должен признать, что я не знаю, почему вы пытаетесь прочитать PropertyCollection из второго DataColumn в первой таблице из DataSet через ExtendedProperties на всех.

Но так как вы упомянули, что вы просто хотите, чтобы отобразить данные в ListBox:

listBx_prod.DataSource = dt_product.Tables[0]; 
listBx_prod.DisplayMember = "ProductName"; 
listBx_prod.ValueMember = "ProductId"; 
+0

На самом деле я новичок в этом. Можете ли вы рассказать точную разницу между DisplayMember и ValueMember. Потому что в моем случае оба достигают того же результата. Использует ли listBx_prod.DisplayMember = «ProductName»; или listBx_prod.ValueMember = "ProductName"; – Sadiq

+0

@Sadiq: 'DisplayMember' - свойство, которое должно быть diplayed, и' ValueMember' является свойством, которое должно использоваться для идентификации элемента. Обычно вы выбрали первичный ключ, если это объект базы данных. –

1

Вы должны установить DataSource в DataTable и установить ValueMember и DisplayMember:

listBox1.DataSource = dt_product.Tables[0]; 
listBox1.ValueMember = "Id"; 
listBox1.DisplayMember = "Name"; 
Смежные вопросы