Как связать комбобокс с базой данных

Обновлено: 01.05.2024

Доброго времени суток. Я начинающий программист. Решил написать программу, для удобства работы. Но столкнулся с непреодолимой для меня логикой. Нужно что бы при выборе записи с одного combobox в другом отображался список с базы данных. все делал по примерам A. Гудок.

Пример: Выбираю в combobox1 Samsung, отображаются записи в combobox2 с базы Samsung.

Выбираю Lg, отображаются записи с базы Lg.

Подключение к базе производит класс DAL. В отдельной форме лежат мои combobox. коллекция combobox не привязанная.

namespace Reviziya
public partial class Dobavit_Prodazhu : Form
DAL dal = new DAL();

public Dobavit_Prodazhu()
InitializeComponent();

txbx_data.Text = DateTime.Now.ToShortDateString();//отображение текущей даты в txbx_Data при загрузки формы
txbx_vremya.Text = DateTime.Now.ToShortTimeString();//отображение текущего времени в txbx_vremya при загрузки формы
txbx_ID.Text = Guid.NewGuid().ToString();// автоматическое выставление idшника с столбец "ID"
>

private void txbx_data_MouseDown(object sender, MouseEventArgs e)
monthCalendar1.Show();
>//txbx_data

private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)//событие на monthCalendar1
txbx_data.Text = monthCalendar1.SelectionStart.ToShortDateString().ToString();
monthCalendar1.Hide();
>

private void btn_Dabavit_Click(object sender, EventArgs e)//кнопка добавить
if(dal.Uhod(txbx_ID.Text.Trim(),//проверка на провописание
txbx_data.Text.Trim(),
txbx_vremya.Text.Trim(),
cbbx_TipProdazhy.Text.Trim(),
cbbx_TipUstroystva.Text.Trim(),
cbbx_proizvoditel.Text.Trim(),
cbbx_model.Text.Trim()))
this.DialogResult = DialogResult.OK;
else
this.DialogResult = DialogResult.No;
>

private void Dobavit_Prodazhu_Load(object sender, EventArgs e)
// TODO: данная строка кода позволяет загрузить данные в таблицу "reviziyaDataSet7.LG". При необходимости она может быть перемещена или удалена.
this.lGTableAdapter.Fill(this.reviziyaDataSet7.LG);
// TODO: данная строка кода позволяет загрузить данные в таблицу "reviziyaDataSet6.Samsung". При необходимости она может быть перемещена или удалена.
this.samsungTableAdapter.Fill(this.reviziyaDataSet6.Samsung);
// TODO: данная строка кода позволяет загрузить данные в таблицу "reviziyaDataSet4.Forma_zapolneniya". При необходимости она может быть перемещена или удалена.
this.forma_zapolneniyaTableAdapter.Fill(this.reviziyaDataSet4.Forma_zapolneniya);
>

private void cbbx_proizvoditel_SelectedIndexChanged(object sender, EventArgs e)

вот уровень DAL:

namespace Reviziya
class DAL
<
string conectonString = @"Data Source=dyadya_vanya-pс;Initial Catalog=Reviziya;Integrated Security=True;";//строка соедениения с базой
public ArrayList Dannye()//отображение в DGV нашей базы "Dannye"
ArrayList dannye = new ArrayList();
using (SqlConnection con = new SqlConnection(conectonString))
SqlCommand com = new SqlCommand("SELECT * FROM Dannye Order By [Дата],[Время]", con); // Order By [Дата] сортировка по дате

try // если неправильно установлинна соеденение с базой
con.Open();
SqlDataReader dr = com.ExecuteReader();

if (dr.HasRows)// если dr содержит записи то выпоняем foreach
foreach (DbDataRecord result in dr)
dannye.Add(result);
>
catch

>
con.Dispose();
>
return dannye;
>
public bool Uhod(string ID, string Data, string Vremya, string Prodazha, string Ustroystva, string Proizvoditel, string Model)//занесение данных в DGV нашу базу "Dannye
bool FlagResult = false;

string query = string.Format("INSERT INTO Dannye ([ID], [Дата], [Время], [Тип Продажи], [Тип устройства], [Производитель], [Модель]) VALUES ('','', '', '', '', '', '')", ID, Data, Vremya, Prodazha, Ustroystva, Proizvoditel, Model); // настраиваем текст для объекта команды //(Время != string.Empty) ? Время : null

using (SqlConnection con = new SqlConnection(conectonString))
SqlCommand com = new SqlCommand(query, con);

try // если неправильно установлинна соеденение с базой
con.Open();
if (com.ExecuteNonQuery() == 1)

FlagResult = true;
>
catch

public bool Udalit(Guid ID)
bool FlagResultDel = false;
string queryDel = string.Format("DELETE FROM Dannye WHERE [ID]=''", ID); // настраиваем текст для объекта команды //(Время != string.Empty) ? Время : null

using (SqlConnection con = new SqlConnection(conectonString))
SqlCommand com = new SqlCommand(queryDel, con);

try // если неправильно установлинна соеденение с базой
con.Open();

if (com.ExecuteNonQuery() == 1)

FlagResultDel = true;
>
catch

Я много всего искал и пытался применить но все четно. Поэтому удалил все мои неблагополучные труды)

Буду очень благодарен за помощь.

  • Изменен тип Maksim Marinov Microsoft contingent staff, Moderator 7 ноября 2016 г. 11:52 тема неактивна

Все ответы

Давать советы достаточно тяжело, не видя вашу БД. Например, из вашего кода непонятно как данные попадают в ваши DataSet, зачем вам нужны разные DataSet для телефонов разных марок. Возможно, вам имеет смысл познакомиться с технологией Entity Framework, она доступ к данным существенно облегчает.

Базу данных я создал на SQL Server. В программе пока 2е формы. Одна показывает данные в DataGridView, другая добавляет туда данные, этим методом public bool Uhod в классе DAL

string query = string.Format("INSERT INTO Dannye ([ID], [Дата], [Время], [Тип Продажи], [Тип устройства], [Производитель], [Модель])- Вот моя таблица.

Разные базы нужны что бы пополнять модели разных производителей. на это будет создана отдельная форма.

namespace Reviziya
public partial class Form1 : Form
DAL dal = new DAL();

public Form1()
InitializeComponent();

ArrayList dannye = dal.Dannye();
dgv_Dannye.DataSource = dannye;
SettingsDgv_Dannye();
>

void SettingsDgv_Dannye() // настройки Dgv_Dannye
try
dgv_Dannye.Columns[0].Visible = false; // или dgv_Dannye.Columns["ID"].Visible = false; скрытие столбца ID
dgv_Dannye.TopLeftHeaderCell.Value = "№"; // вверхней левой ячейки отображается №
>
catch

private void Form1_Load(object sender, EventArgs e)
// TODO: данная строка кода позволяет загрузить данные в таблицу "reviziyaDataSet5.Samsung". При необходимости она может быть перемещена или удалена.
this.samsungTableAdapter.Fill(this.reviziyaDataSet5.Samsung);
// TODO: данная строка кода позволяет загрузить данные в таблицу "reviziyaDataSet3.Forma_zapolneniya". При необходимости она может быть перемещена или удалена.
this.forma_zapolneniyaTableAdapter.Fill(this.reviziyaDataSet3.Forma_zapolneniya);
>

private void fillToolStripButton_Click(object sender, EventArgs e)
try
this.forma_zapolneniyaTableAdapter.Fill(this.reviziyaDataSet3.Forma_zapolneniya);
>
catch (System.Exception ex)
System.Windows.Forms.MessageBox.Show(ex.Message);
>

public void dgv_Dannye_CellEnter(object sender, DataGridViewCellEventArgs e) // Отображение записей в textbox`ах. CellEnter если фокус на данной ячейки
txbx_ID.Text = dgv_Dannye.Rows[e.RowIndex].Cells[0].Value.ToString();
txbx_data.Text = dgv_Dannye.Rows[e.RowIndex].Cells[1].Value.ToString(); // e.RowIndex возврощяет активную строку из Cells[1] (стобца "Дата") и ToString() передодит в строковое значение из объекта
string vremya = dgv_Dannye.Rows[e.RowIndex].Cells[2].Value.ToString();
txbx_vremya.Text = (vremya == string.Empty) ? "Нет данных" : vremya; // e.RowIndex возврощяет активную строку из Cells[1] (стобца "Дата") и ToString() передодит в строковое значение из объекта
string prodazhy = dgv_Dannye.Rows[e.RowIndex].Cells[3].Value.ToString();
cbbx_TipProdazhy.Text = (prodazhy == string.Empty) ? "Нет данных" : prodazhy; // e.RowIndex возврощяет активную строку из Cells[1] (стобца "Дата") и ToString() передодит в строковое значение из объекта
string ustroystva = dgv_Dannye.Rows[e.RowIndex].Cells[4].Value.ToString();
cbbx_TipUstroystva.Text = (ustroystva == string.Empty) ? "Нет данных" : ustroystva;// e.RowIndex возврощяет активную строку из Cells[1] (стобца "Дата") и ToString() передодит в строковое значение из объекта
string proizvoditel = dgv_Dannye.Rows[e.RowIndex].Cells[5].Value.ToString();
cbbx_proizvoditel.Text = (proizvoditel == string.Empty) ? "Нет данных" : proizvoditel; // e.RowIndex возврощяет активную строку из Cells[1] (стобца "Дата") и ToString() передодит в строковое значение из объекта
string model = dgv_Dannye.Rows[e.RowIndex].Cells[6].Value.ToString();
cbbx_model.Text = (model == string.Empty) ? "Нет данных" : model; // e.RowIndex возврощяет активную строку из Cells[1] (стобца "Дата") и ToString() передодит в строковое значение из объекта

private void уходToolStripMenuItem_Click(object sender, EventArgs e)//меню/добавить/уход
Dobavit_Prodazhu uhod = new Dobavit_Prodazhu();// создаем форму Dobavit_Prodazhu
if (uhod.ShowDialog() == DialogResult.OK)
dgv_Dannye.DataSource = dal.Dannye();//обновление базы
MessageBox.Show("Уход занесен", "Уход", MessageBoxButtons.OK);
>
else
MessageBox.Show("Уход не занесен. ", "Уход", MessageBoxButtons.OK);
>

private void dgv_Dannye_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)// номерация в DataGredView
Object nomeracyya = ((DataGridView)sender).Rows[e.RowIndex].HeaderCell.Value;
if (nomeracyya == null || !nomeracyya.Equals((e.RowIndex + 1).ToString()))
((DataGridView)sender).Rows[e.RowIndex].HeaderCell.Value = (e.RowIndex + 1).ToString();
>

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
if (MessageBox.Show("Вы действительно хотите закрыть приложение?", "Помошник в ревизии", MessageBoxButtons.OKCancel) == DialogResult.OK)
e.Cancel = false;
else
e.Cancel = true;

>// выход из продраммы

private void выходToolStripMenuItem_Click(object sender, EventArgs e)
Application.Exit();
>//выход программы из меню

private void btn_udalit_Click(object sender, EventArgs e)//кнопка удалить
if (MessageBox.Show("Вы действительно хотите удалить запись?", "Внимание", MessageBoxButtons.YesNo) == DialogResult.Yes)
if (dgv_Dannye.SelectedRows.Count != 0)
DAL dal = new DAL();
foreach (DataGridViewRow item in dgv_Dannye.SelectedRows)
if (!dal.Udalit((Guid)item.Cells[0].Value))
MessageBox.Show("Ошибка удаления строки " + (Guid)item.Cells[0].Value);
dgv_Dannye.DataSource = dal.Dannye();
>
>
else

private void btn_redakt_Click(object sender, EventArgs e)//кнопка редактировать
txbx_ID.Text = Guid.NewGuid().ToString();// автоматическое выставление idшника с столбец "ID"

txbx_data.Enabled = true;
txbx_vremya.Enabled = true;
cbbx_TipProdazhy.Enabled = true;
cbbx_TipUstroystva.Enabled = true;
cbbx_proizvoditel.Enabled = true;
cbbx_model.Enabled = true;
btn_save.Enabled = true;
>

private void btn_save_Click(object sender, EventArgs e)//кнопка сохранить
if (MessageBox.Show("Вы действительно хотите отредактировать запись?", "Внимание", MessageBoxButtons.YesNo) == DialogResult.Yes)
if (dal.Uhod(txbx_ID.Text.Trim(),//проверка на провописание
txbx_data.Text.Trim(),
txbx_vremya.Text.Trim(),
cbbx_TipProdazhy.Text.Trim(),
cbbx_TipUstroystva.Text.Trim(),
cbbx_proizvoditel.Text.Trim(),
cbbx_model.Text.Trim()))
this.DialogResult = DialogResult.OK;
else
this.DialogResult = DialogResult.No;

if (dgv_Dannye.SelectedRows.Count != 0)
DAL dal = new DAL();
foreach (DataGridViewRow item in dgv_Dannye.SelectedRows)
if (!dal.Udalit((Guid)item.Cells[0].Value))
MessageBox.Show("Ошибка удаления строки " + (Guid)item.Cells[0].Value);
>
>

dgv_Dannye.DataSource = dal.Dannye();
>
else

txbx_data.Enabled = false;
txbx_vremya.Enabled = false;
cbbx_TipProdazhy.Enabled = false;
cbbx_TipUstroystva.Enabled = false;
cbbx_proizvoditel.Enabled = false;
cbbx_model.Enabled = false;
btn_save.Enabled = false;

Вы можете привязать ComboBox и ListBox к данным для выполнения таких задач, как просмотр данных в базе данных, ввод новых данных или изменение существующих данных.

Привязка элемента управления ComboBox или ListBox

Присвойте свойству DataSource объект источника данных. Возможные источники данных включают привязку BindingSource к данным, таблице данных, представлению данных, набору данных, диспетчеру представлений данных, массиву или любому классу, реализующему интерфейс IList. Дополнительные сведения см. в разделе Источники данных, поддерживаемые Windows Forms.

Если выполняется привязка к таблице, присвойте свойству DisplayMember имя столбца в источнике данных.

При привязке к IList, задайте для элемента отображения общедоступное свойство типа в списке.

При привязке к источнику данных, который не реализует интерфейс IBindingList, например ArrayList, данные привязанного элемента управления не будут обновляться при обновлении источника данных. Например, если поле со списком привязано к ArrayList, а данные добавляются в ArrayList, эти новые элементы не будут отображаться в поле со списком. Однако можно принудительно обновить поле со списком, вызвав методы SuspendBinding и ResumeBinding в экземпляре класса BindingContext, к которому привязан элемент управления.

Помогите заполнить ComboBox!
Запросом я выбираю столбец из БД. Вот по нему и должен происходить выбор в ComboBox.
БД mssql.
Как этот столбец сохранить в массив а потом массив всунуть в ComboBox?


Заполнение ComboBox значениями из столбца БД
Помогите заполнить ComboBox. При открытие формы у меня должен быть заполнен ComboBox данными из.

Заполнить ComboBox значениями из столбца БД
Здравствуйте! Мне необходимо заполнить ComboBox данными из БД mssql. Смотрела такую же.

Заполнение значениями в textbox при выборе из Combobox
Добрый день! Такая проблема. Решил переписать программу, а именно сделать локальную базу (из SQL.

Заполнение одного столбца во всех строках значениями из массива
Добрый день. В общем-то то, что мне нужно, описано в заголовке темы, есть массив, который.

ааа ! Адапрер ! юзал его для DataGrid а сюда как то не придумал

Добавлено через 11 минут
Работает! Спасибо!

Вопрос по этой же теме. У меня comboBox заполняется полностью элементами из таблици, а я хочу что бы первая запись в нем была пустая строка а уже при развертке выводились мои значения

кто не понял вот пример (скрин сейчас выложить не могу, попытайтесь без него понять):

вот стартует форма, в comboBox1 пустая строка, за ней по списку, если развернуть его, идет "марки машин". а в comboBox2 ужа находится "Audi". при чем в comboBox2 только 1 значение и если я выберу строку "марки машин" то там будет несколько марок.

надеюсь я доступно обьяснил проблемму. хотелось бы что бы при старте формы в comboBox2 вообще ничего не было а заполнялся он при выборе чего-то в comboBox1

Microsoft Logo

Gray Pipe

Приносим извинения. Запрошенное содержимое было удалено. Вы будете автоматически перенаправлены через 1 секунду.

Лучший отвечающий

Вопрос

Необходимо связать (заранее извлеченные из БД в DataSet.Table) данные с ComboBox. Связываю следующим образом:

private void MainForm2_Load( object sender, EventArgs e)

this .bindingSourcePERIOD.DataSource = this .DataSet;

this .bindingSourcePERIOD.DataMember = TableName ;

this .comboBoxPERIOD.DataBindings.Add( new Binding ( "SelectedValue" , this .bindingSourcePERIOD.DataSource, this .bindingSourcePERIOD.DataMember, true ));

this .comboBoxPERIOD.DisplayMember = "PERIOD" ;

this .comboBoxPERIOD.ValueMember = "RECID" ;

Данные извлекаются и связываются с ComboBox корректно (по крайней мере они все попадают в список). Работаю с программой, выполняю различные операции – все нормально. Но стоит только каким-то образом поработать с этим ComboBox (просто просмотреть выпадающий список или выбрать другое значение из списка) после чего часть функционала моей программы перестает вообще реагировать на события (нажатие на кнопки, переход по страницам TabControl и т.д.). Причем интересно, что часть функционала работает корректно, закрыть форму невозможно (хотя кнопка закрытия реагирует каждый раз при нажатии и система не зависает, кнопки свернуть и развернуть работают корректно), а ошибок вообще никаких не выпадает. Кроме того, работать с этим ComboBox тоже можно, но как-то странно он работает – выбирать значения из списка во второй раз уже труднее – список моментально сворачивается.

Подскажите, пожалуйста, с чем может быть вызвано такое поведение системы?

И еще такой вопрос: Возможно ли реализовать подобное связывание для toolStripComboBox (у меня пока не получилось, выдает ошибку при компиляции)?

Доброго времени суток. Я начинающий программист. Решил написать программу, для удобства работы. Но столкнулся с непреодолимой для меня логикой. Нужно что бы при выборе записи с одного combobox в другом отображался список с базы данных. все делал по примерам A. Гудок.

Пример: Выбираю в combobox1 Samsung, отображаются записи в combobox2 с базы Samsung.

Выбираю Lg, отображаются записи с базы Lg.

Подключение к базе производит класс DAL. В отдельной форме лежат мои combobox. коллекция combobox не привязанная.

namespace Reviziya
public partial class Dobavit_Prodazhu : Form
DAL dal = new DAL();

public Dobavit_Prodazhu()
InitializeComponent();

txbx_data.Text = DateTime.Now.ToShortDateString();//отображение текущей даты в txbx_Data при загрузки формы
txbx_vremya.Text = DateTime.Now.ToShortTimeString();//отображение текущего времени в txbx_vremya при загрузки формы
txbx_ID.Text = Guid.NewGuid().ToString();// автоматическое выставление idшника с столбец "ID"
>

private void txbx_data_MouseDown(object sender, MouseEventArgs e)
monthCalendar1.Show();
>//txbx_data

private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)//событие на monthCalendar1
txbx_data.Text = monthCalendar1.SelectionStart.ToShortDateString().ToString();
monthCalendar1.Hide();
>

private void btn_Dabavit_Click(object sender, EventArgs e)//кнопка добавить
if(dal.Uhod(txbx_ID.Text.Trim(),//проверка на провописание
txbx_data.Text.Trim(),
txbx_vremya.Text.Trim(),
cbbx_TipProdazhy.Text.Trim(),
cbbx_TipUstroystva.Text.Trim(),
cbbx_proizvoditel.Text.Trim(),
cbbx_model.Text.Trim()))
this.DialogResult = DialogResult.OK;
else
this.DialogResult = DialogResult.No;
>

private void Dobavit_Prodazhu_Load(object sender, EventArgs e)
// TODO: данная строка кода позволяет загрузить данные в таблицу "reviziyaDataSet7.LG". При необходимости она может быть перемещена или удалена.
this.lGTableAdapter.Fill(this.reviziyaDataSet7.LG);
// TODO: данная строка кода позволяет загрузить данные в таблицу "reviziyaDataSet6.Samsung". При необходимости она может быть перемещена или удалена.
this.samsungTableAdapter.Fill(this.reviziyaDataSet6.Samsung);
// TODO: данная строка кода позволяет загрузить данные в таблицу "reviziyaDataSet4.Forma_zapolneniya". При необходимости она может быть перемещена или удалена.
this.forma_zapolneniyaTableAdapter.Fill(this.reviziyaDataSet4.Forma_zapolneniya);
>

private void cbbx_proizvoditel_SelectedIndexChanged(object sender, EventArgs e)

вот уровень DAL:

namespace Reviziya
class DAL
<
string conectonString = @"Data Source=dyadya_vanya-pс;Initial Catalog=Reviziya;Integrated Security=True;";//строка соедениения с базой
public ArrayList Dannye()//отображение в DGV нашей базы "Dannye"
ArrayList dannye = new ArrayList();
using (SqlConnection con = new SqlConnection(conectonString))
SqlCommand com = new SqlCommand("SELECT * FROM Dannye Order By [Дата],[Время]", con); // Order By [Дата] сортировка по дате

try // если неправильно установлинна соеденение с базой
con.Open();
SqlDataReader dr = com.ExecuteReader();

if (dr.HasRows)// если dr содержит записи то выпоняем foreach
foreach (DbDataRecord result in dr)
dannye.Add(result);
>
catch

>
con.Dispose();
>
return dannye;
>
public bool Uhod(string ID, string Data, string Vremya, string Prodazha, string Ustroystva, string Proizvoditel, string Model)//занесение данных в DGV нашу базу "Dannye
bool FlagResult = false;

string query = string.Format("INSERT INTO Dannye ([ID], [Дата], [Время], [Тип Продажи], [Тип устройства], [Производитель], [Модель]) VALUES ('','', '', '', '', '', '')", ID, Data, Vremya, Prodazha, Ustroystva, Proizvoditel, Model); // настраиваем текст для объекта команды //(Время != string.Empty) ? Время : null

using (SqlConnection con = new SqlConnection(conectonString))
SqlCommand com = new SqlCommand(query, con);

try // если неправильно установлинна соеденение с базой
con.Open();
if (com.ExecuteNonQuery() == 1)

FlagResult = true;
>
catch

public bool Udalit(Guid ID)
bool FlagResultDel = false;
string queryDel = string.Format("DELETE FROM Dannye WHERE [ID]=''", ID); // настраиваем текст для объекта команды //(Время != string.Empty) ? Время : null

using (SqlConnection con = new SqlConnection(conectonString))
SqlCommand com = new SqlCommand(queryDel, con);

try // если неправильно установлинна соеденение с базой
con.Open();

if (com.ExecuteNonQuery() == 1)

FlagResultDel = true;
>
catch

Я много всего искал и пытался применить но все четно. Поэтому удалил все мои неблагополучные труды)

Буду очень благодарен за помощь.

  • Изменен тип Maksim Marinov Microsoft contingent staff, Moderator 7 ноября 2016 г. 11:52 тема неактивна

Все ответы

Давать советы достаточно тяжело, не видя вашу БД. Например, из вашего кода непонятно как данные попадают в ваши DataSet, зачем вам нужны разные DataSet для телефонов разных марок. Возможно, вам имеет смысл познакомиться с технологией Entity Framework, она доступ к данным существенно облегчает.

Базу данных я создал на SQL Server. В программе пока 2е формы. Одна показывает данные в DataGridView, другая добавляет туда данные, этим методом public bool Uhod в классе DAL

string query = string.Format("INSERT INTO Dannye ([ID], [Дата], [Время], [Тип Продажи], [Тип устройства], [Производитель], [Модель])- Вот моя таблица.

Разные базы нужны что бы пополнять модели разных производителей. на это будет создана отдельная форма.

namespace Reviziya
public partial class Form1 : Form
DAL dal = new DAL();

public Form1()
InitializeComponent();

ArrayList dannye = dal.Dannye();
dgv_Dannye.DataSource = dannye;
SettingsDgv_Dannye();
>

void SettingsDgv_Dannye() // настройки Dgv_Dannye
try
dgv_Dannye.Columns[0].Visible = false; // или dgv_Dannye.Columns["ID"].Visible = false; скрытие столбца ID
dgv_Dannye.TopLeftHeaderCell.Value = "№"; // вверхней левой ячейки отображается №
>
catch

private void Form1_Load(object sender, EventArgs e)
// TODO: данная строка кода позволяет загрузить данные в таблицу "reviziyaDataSet5.Samsung". При необходимости она может быть перемещена или удалена.
this.samsungTableAdapter.Fill(this.reviziyaDataSet5.Samsung);
// TODO: данная строка кода позволяет загрузить данные в таблицу "reviziyaDataSet3.Forma_zapolneniya". При необходимости она может быть перемещена или удалена.
this.forma_zapolneniyaTableAdapter.Fill(this.reviziyaDataSet3.Forma_zapolneniya);
>

private void fillToolStripButton_Click(object sender, EventArgs e)
try
this.forma_zapolneniyaTableAdapter.Fill(this.reviziyaDataSet3.Forma_zapolneniya);
>
catch (System.Exception ex)
System.Windows.Forms.MessageBox.Show(ex.Message);
>

public void dgv_Dannye_CellEnter(object sender, DataGridViewCellEventArgs e) // Отображение записей в textbox`ах. CellEnter если фокус на данной ячейки
txbx_ID.Text = dgv_Dannye.Rows[e.RowIndex].Cells[0].Value.ToString();
txbx_data.Text = dgv_Dannye.Rows[e.RowIndex].Cells[1].Value.ToString(); // e.RowIndex возврощяет активную строку из Cells[1] (стобца "Дата") и ToString() передодит в строковое значение из объекта
string vremya = dgv_Dannye.Rows[e.RowIndex].Cells[2].Value.ToString();
txbx_vremya.Text = (vremya == string.Empty) ? "Нет данных" : vremya; // e.RowIndex возврощяет активную строку из Cells[1] (стобца "Дата") и ToString() передодит в строковое значение из объекта
string prodazhy = dgv_Dannye.Rows[e.RowIndex].Cells[3].Value.ToString();
cbbx_TipProdazhy.Text = (prodazhy == string.Empty) ? "Нет данных" : prodazhy; // e.RowIndex возврощяет активную строку из Cells[1] (стобца "Дата") и ToString() передодит в строковое значение из объекта
string ustroystva = dgv_Dannye.Rows[e.RowIndex].Cells[4].Value.ToString();
cbbx_TipUstroystva.Text = (ustroystva == string.Empty) ? "Нет данных" : ustroystva;// e.RowIndex возврощяет активную строку из Cells[1] (стобца "Дата") и ToString() передодит в строковое значение из объекта
string proizvoditel = dgv_Dannye.Rows[e.RowIndex].Cells[5].Value.ToString();
cbbx_proizvoditel.Text = (proizvoditel == string.Empty) ? "Нет данных" : proizvoditel; // e.RowIndex возврощяет активную строку из Cells[1] (стобца "Дата") и ToString() передодит в строковое значение из объекта
string model = dgv_Dannye.Rows[e.RowIndex].Cells[6].Value.ToString();
cbbx_model.Text = (model == string.Empty) ? "Нет данных" : model; // e.RowIndex возврощяет активную строку из Cells[1] (стобца "Дата") и ToString() передодит в строковое значение из объекта

private void уходToolStripMenuItem_Click(object sender, EventArgs e)//меню/добавить/уход
Dobavit_Prodazhu uhod = new Dobavit_Prodazhu();// создаем форму Dobavit_Prodazhu
if (uhod.ShowDialog() == DialogResult.OK)
dgv_Dannye.DataSource = dal.Dannye();//обновление базы
MessageBox.Show("Уход занесен", "Уход", MessageBoxButtons.OK);
>
else
MessageBox.Show("Уход не занесен. ", "Уход", MessageBoxButtons.OK);
>

private void dgv_Dannye_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)// номерация в DataGredView
Object nomeracyya = ((DataGridView)sender).Rows[e.RowIndex].HeaderCell.Value;
if (nomeracyya == null || !nomeracyya.Equals((e.RowIndex + 1).ToString()))
((DataGridView)sender).Rows[e.RowIndex].HeaderCell.Value = (e.RowIndex + 1).ToString();
>

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
if (MessageBox.Show("Вы действительно хотите закрыть приложение?", "Помошник в ревизии", MessageBoxButtons.OKCancel) == DialogResult.OK)
e.Cancel = false;
else
e.Cancel = true;

>// выход из продраммы

private void выходToolStripMenuItem_Click(object sender, EventArgs e)
Application.Exit();
>//выход программы из меню

private void btn_udalit_Click(object sender, EventArgs e)//кнопка удалить
if (MessageBox.Show("Вы действительно хотите удалить запись?", "Внимание", MessageBoxButtons.YesNo) == DialogResult.Yes)
if (dgv_Dannye.SelectedRows.Count != 0)
DAL dal = new DAL();
foreach (DataGridViewRow item in dgv_Dannye.SelectedRows)
if (!dal.Udalit((Guid)item.Cells[0].Value))
MessageBox.Show("Ошибка удаления строки " + (Guid)item.Cells[0].Value);
dgv_Dannye.DataSource = dal.Dannye();
>
>
else

private void btn_redakt_Click(object sender, EventArgs e)//кнопка редактировать
txbx_ID.Text = Guid.NewGuid().ToString();// автоматическое выставление idшника с столбец "ID"

txbx_data.Enabled = true;
txbx_vremya.Enabled = true;
cbbx_TipProdazhy.Enabled = true;
cbbx_TipUstroystva.Enabled = true;
cbbx_proizvoditel.Enabled = true;
cbbx_model.Enabled = true;
btn_save.Enabled = true;
>

private void btn_save_Click(object sender, EventArgs e)//кнопка сохранить
if (MessageBox.Show("Вы действительно хотите отредактировать запись?", "Внимание", MessageBoxButtons.YesNo) == DialogResult.Yes)
if (dal.Uhod(txbx_ID.Text.Trim(),//проверка на провописание
txbx_data.Text.Trim(),
txbx_vremya.Text.Trim(),
cbbx_TipProdazhy.Text.Trim(),
cbbx_TipUstroystva.Text.Trim(),
cbbx_proizvoditel.Text.Trim(),
cbbx_model.Text.Trim()))
this.DialogResult = DialogResult.OK;
else
this.DialogResult = DialogResult.No;

if (dgv_Dannye.SelectedRows.Count != 0)
DAL dal = new DAL();
foreach (DataGridViewRow item in dgv_Dannye.SelectedRows)
if (!dal.Udalit((Guid)item.Cells[0].Value))
MessageBox.Show("Ошибка удаления строки " + (Guid)item.Cells[0].Value);
>
>

dgv_Dannye.DataSource = dal.Dannye();
>
else

txbx_data.Enabled = false;
txbx_vremya.Enabled = false;
cbbx_TipProdazhy.Enabled = false;
cbbx_TipUstroystva.Enabled = false;
cbbx_proizvoditel.Enabled = false;
cbbx_model.Enabled = false;
btn_save.Enabled = false;

Читайте также: