Как связать комбобокс с базой данных
Доброго времени суток. Я начинающий программист. Решил написать программу, для удобства работы. Но столкнулся с непреодолимой для меня логикой. Нужно что бы при выборе записи с одного 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
Приносим извинения. Запрошенное содержимое было удалено. Вы будете автоматически перенаправлены через 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;
Читайте также: