KontrTableAdapter.FillByName(myDbDataSet.Kontr,textBox1.Text);
Далее вам необходимо спроектировать все формы, которые понадобятся для работы и разместить на них все визуальные компоненты работы с таблицами. После того, как вы это сделаете, можно переходить дальше.
Теперь рассмотрим, как спроектировать данную программу с учетом разделения на управляющие классы и интерфейсы. Нам необходимо увести всю работу с БД в управляющий класс, а в форме будут только вызовы методов этого класса и передача ему соответствующих параметров.
Первое, что нам необходимо сделать, это определить перечисление для того, чтобы в основной программе определять тип обрабатываемого справочника. Пусть в нашей программе определено два справочника(контрагенты и сотрудники). Модифицируем наш управляющий класс, добавив в него это перечисление. Объявим его так:
Public enum Kontr{kontr,sotrudnik};
Теперь объявим у класса поле типа SqlConnecion, которое будет определять текущее подключение:
Public SqlConnection conn;
Теперь объявим метод установки подключения. Он нам понадобится, если в процессе работы программы будем менять подключение. В качестве параметров передадим ему путь к БД и формы, на которых размещены объекты подключения к БД. Пусть в наем примере эти объекты объявлены на Form1 и Form2. В методе будем создавать новое подключение и перенастраивать на него все компоненты работы с БД:
public void SetConnecton(string dbf,Form1 th, Form2 th2)
{
ConsStr = dbf;
conn = new SqlConnection(ConsStr);
th.kontrTableAdapter.Connection = conn;
th.sotrudnikiTableAdapter.Connection = conn;
th2.sotrudnikiTableAdapter.Connection = conn;
th2.kontrTableAdapter.Connection = conn;
th.kontrTableAdapter.Fill(th.myDBDataSet1.Kontr1);
th.sotrudnikiTableAdapter.Fill(th.myDBDataSet.Sotrudniki1);
th2.kontrTableAdapter.Fill(th.myDBDataSet.Kontr);
th2.sotrudnikiTableAdapter.Fill(th.myDBDataSet.Sotrudniki);
}
Теперь напишем метод, который будет сохранять измененные данные(например, после того как пользователь сохраняет данные после редактирования или добавления нового элемента). В метод будем передавать перечисление, определяющее тип справочника и форму, на которой расположены объекты подключения к БД. Этот метод будем вызывать при возврате к списку данных.
public void SaveData(Kontr h,Form1 th)
{
if (h == Kontr.kontr)
{
th.kontrBindingSource.EndEdit();
th.kontrTableAdapter.Update(th.myDBDataSet.Kontr);
th.kontrTableAdapter.Fill(th.myDBDataSet.Kontr);
}
}
По этому же принципу напишем метод удаления текущего элемента выбранного справочника:
public void removecur(Kontr h,Form1 th)
{
if (h == Kontr.sotrudnik)
{
th.sotrudnikiBindingSource.RemoveCurrent();
th.sotrudnikiBindingSource.EndEdit();
th.sotrudnikiTableAdapter.Update(th.myDBDataSet.Sotrudniki);
}
}
Теперь напишем метод, который будет отвечать за создание или редактирование элементов справочника. В качестве параметров передадим ему логическую переменную, определяющую добавление или редактирование выполняется, тип справочника, ссылку на основную форму и на форму с полями редактирования элемента справочника:
public void Edit_Add(bool add, Kontr h, Form1 th, Form f)
{
if (h == Kontr.sotrudnik)
{
Form2 f2 = null; //для редактирования данных о сотруднике //используется вторая форма, а для контрагентов, например, будет //третья.
