System.Data.DataRowView C#
Всякий раз, когда я запускаю этот код, я возвращаюсь - System.Data.DataRowView. Я не понимаю, в чем проблема. Я пытался искать здесь решения, но я не могу понять (я новичок в программировании..).
public void loadLabels()
{
using (OleDbConnection connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + dbString))
{
connection.Open();
String strDa = "SELECT Lessons.number, Lessons.type, Lessons.datel, Lessons.hour , Lessons.money, Lessons.note FROM Lessons";
using (OleDbDataAdapter da = new OleDbDataAdapter(strDa, connection))
{
DataTable t = new DataTable();
da.Fill(t);
listBox1.DataSource = t;
}
}
}
1 ответ
Элемент управления ListBox берет каждый элемент вашей DataTable и создает элементы для его свойства Items. Но когда он добавляет элемент, он не знает, какое из полей вашей базы данных должно отображаться в каждой из строк, добавляемых в коллекцию. В этом случае он использует метод ToString объекта, используемого для добавления элементов. В вашем случае это метод ToString класса DataRowView. Но класс DataRowView не реализует какой-либо конкретный метод ToString(), поэтому вызывается базовая реализация (object.ToString()), которая возвращает просто имя класса.
Вы можете изменить это поведение, используя свойства
listBox1.DataSource = t;
listBox1.DisplayMember = "datel";
listBox1.ValueMember = "number";
Это покажет только один столбец вашего запроса. Если вы хотите показать более одного столбца, у вас есть два варианта. Отключите элемент управления ListBox и используйте DataGridView (на этом сайте много примеров, используйте функцию поиска) или создайте псевдоним в своем запросе, чтобы объединить более одного поля
String strDa = @"SELECT Lessons.number, Lessons.type, Lessons.datel,
Lessons.hour, Lessons.money, Lessons.note,
Lessons.datel & ' ' & Lessons.hour & ' - ' & Lessons.money as LessonDetails
FROM Lessons";
....
listBox1.DisplayMember = "LessonDetails";
Это немного неуклюже и производит не очень аккуратный дисплей. Я рекомендую использовать DataGridView для этой задачи