Связать два combobox

Обновлено: 24.04.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`а: Отдел, Подразделение и Сотрудник? В БД(phpmyadmin) имеются три отдела, в которых по одному подразделению, но в некоторых подразделения имеется по два сотрудника. В данный момент при запуске формы в comboBox`ах Отдел и Подразделение присутствуют по пять записей в каждом (повторяются те названия отделов/подразделений, где работают по два сотрудника). Например: выбираю номер отдела и отображаются номера подразделений только этого отдела. Буду рад любому совету.


Связать несколько comboBox-ов
Доброго времени суток! Есть две таблицы БД связанные между собой внешним ключом, отображаются они.

Как связать TextBox с Combobox?
Добрый день! Сразу оговорюсь, что в теме пытаюсь разобраться практически с нуля, так что извините.

Как связать comboBox и dateTimePicker ?
Доброго времени суток! Прошу вас помощи в моем приложении: нужно связать два поля для получения.


Как связать Combobox и ObservableCollection в проекте WF?
Собственно сабж

Решение

Решил пока не заморачиваться с тремя комбоБоксами, остановился на двух (отдел/подразделение). С выводом отделов проблем нет, но как вывести во второй комбоБокс зависимые от отдела подразделения вообще не соображаю.

Решение

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

Попробовал после смены значения в первом комбоБоксе выполнять запрос, итог: второй комбоБокс пустой. Я думаю, что я ввёл неправильный запрос.

Решение

Имеете ввиду, что в comboBox1.SelectedItem вставить первичный ключ из главной таблицы (comboBox1.SelectedItem = "registrationnumber"; ), а уже при смене значения в нём прописать запрос, где будет связь внешнего ключа и первичного ("SELECT s.namek FROM subdivision s WHERE s.unitregistrationnumber = ' " + comboBox1.SelectedItem.ToString() + " ' ", connection); ) ? Мои мысли двигаются в правильном направлении?

Решение

Нет, в comboBox1.SelectedItem ничего вставлять не нужно! Просто в SelectedItem, скорее всего, содержится строка таблицы. Разумеется, если Вы всю строку вставите в запрос, то он ничего не найдет. Попробуйте использовать не SelectedItem, а SelectedValue. Либо извлеките из SelectedItem столбец с unitregistrationnumber (ну или по чему там выборку нужно делать)

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

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

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

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

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

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

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

Поставить два блока в одну строку, так чтобы они отстояли друг от друга на определенном растоянии
Ширина и высота не заданы, как поставить два блока в одну строку, так чтобы они отстояли друг от.

Как выводить в Txt файл значения так, чтобы они не заменяли друг друга
Вот такая вот программа. На строчках 46-49 она должна записывать значения в файл. Можно ли.

combobox лучше всего подходит для моей программы и значительно сокращает время заноса данных в базу.
плюс к этому, если я доделаю свою идею то эта статья будет полезна и многим другим.
Да и как сделать еще лучше, чтобы при выборе например "SAMSUNG" в combobox1, в combobox2 появлялась постоянно меняющаяся база, какие то модели исчезают с производства, а какие то наоборот. Баз будет штук 10, на каждого производителя.
Или хотя бы можно было бы создать отдельную базу для моделей, но пользоваться выборкой! Что бы при выборе отдельного производителя вылазили только его модели)??

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

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

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

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

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

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

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

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