Просмотр данных средствами ADO.NET с привязкой на этапе выполнения
Выборка данных из базы данных SQL Server с применением объекта DataTable
Здесь мы применим вместо элемента управления OleDbDataAdapter соответствующий ему класс System.Data.OleDb.OleDbDataAdapter. Программно будет создан адаптер данных путем присвоения ему строки SQL и объекта соединения. После этого будет заполняться объект DataTable. После этого необходимо будет присвоить значения следующим элементам списка для отображения в нем данных:
- DataSource - указывает на источник с загруженными данными.
- DisplayMember - указывает столбец в таблице, предназначенный для отображения в списке.
- ValueMember - указывает столбец таблицы, который будет загружен в качестве неотображаемых значений списка.
Применение в программе элемента управления ListBox в рамках рассматриваемого способа позволит обращаться к столбцу ValueMember в свойстве SelectItem списка.
-
Создайте
в проекте копию формы Form1. Для этого в панели Solution
Explorer щелкните на файле Form1.cs и через контекстное
меню выполните команду Copy, а затем щелкнув на узле проекта DataView выполните команду Paste. Переименуйте копию в Form2.cs
-
Щелкните
на файле Form2.cs правой кнопкой мыши и выполните команду View Code, чтобы открыть код формы. Через окно поиска и
замены текстового редактора (вызов по комбинации клавиш
Ctrl-F) найдите в тексте кода все вхождения Form1 и замените
их на Form2.
-
Найдите
в классе Form2 обработчик кнопки, перешедший сюда при копировании
предыдущей формы, и замените его тело на следующий код
private void btnLoadList_Click(object sender, System.EventArgs e)
{
// Описания локальных ссылочных переменных
System.Data.OleDb.OleDbDataAdapter odaCust;// Пока только ссылка
System.String strSQL;
System.Data.DataTable dtCust = new DataTable();// Создали сразу объект
// Сформировать строку SQL
strSQL = "SELECT CustomerID, CompanyName FROM Customers "
+ "WHERE CustomerID LIKE '"
+ this.txtCustLimit.Text + "%'";
// Выполнение в защищенном режиме с перехватом исключений
try
{
// Создать экземпляр адаптера данных
odaCust = new System.Data.OleDb.OleDbDataAdapter(
strSQL, Form1.BuildCnnStr("localhost", "Northwind"));
// Заполнить таблицу данных
odaCust.Fill(dtCust);
// Связать данные со списком
lstCustomers.DataSource = dtCust;
lstCustomers.DisplayMember = "CompanyName";
lstCustomers.ValueMember = "CustomerID";
}
catch(System.Data.OleDb.OleDbException oextData)
{
MessageBox.Show(oextData.Message);
}
}
Листинг
8.5.
Обработчик кнопки формы Form2
Обратите внимание, что мы в этом коде вызываем BuildCnnStr() как функцию-член класса Form1, которая в нем для этой возможности была объявлена как статическая.
-
Разместите
на Form0 еще одну кнопку и текстовую
метку Label для вызова
формы Form2. Содержимое свойства Text текстовой метки может
быть таким:
Выборка данных с использованием объекта DataTable
Дизайн формы Form0 должен выглядеть примерно так
-
Создайте
в форме Form0 обработчик для новой кнопки, который заполните
так
private void button2_Click(object sender, System.EventArgs e)
{
Form2 frm = new Form2();
frm.Show();
}
Листинг
8.6.
Обработчик для вызова формы Form2

