Как combobox связать с таблицей sql

Обновлено: 28.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!
Запросом я выбираю столбец из БД. Вот по нему и должен происходить выбор в ComboBox.
БД mssql.
Как этот столбец сохранить в массив а потом массив всунуть в ComboBox?


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

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

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

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

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

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

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

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

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

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

I need to add the items to combo box from SQL db .In my form am having 1 combo box(for items) and 1 textbox (for values). I need to load items to both from DB table and the value of textbox should be selected according to value of combo box.

The textbox value should be selected automatically when combobox value is selected.

Make use of sqlparameter to avoide sql injection and make use of execute scalar as you are trying to get only one price for selected product

hi what u updated.showing same error ; expected in line SqlParameter paramName = new SqlParameter("@price", SqlDbType.VarChar, 255) < Value = comboBox1.SelectedValue >;

@rebo - i chaged qlParameter paramName = new SqlParameter("@price", SqlDbType.VarChar, 255) < Value = comboBox1.SelectedValue >; to command.Parameters.AddWithValue("@price", comboBox1.SelectedValue.ToString()); check the answer

@rebo= i suggest you make use of ExecuteScalar rather than reader it because only one value get return from the sql query

if you want to display the Selected Item price from the combobox.

Difference between SelectedText and Text Property of ComboBox n

SelectedText property from MSDN

Gets or sets the text that is selected in the editable portion of a ComboBox.

while Text property from MSDN

Gets or sets the text associated with this control.

hi thanks for ur quick reply.i want to know the difference of selectedvalue and selectedtext in combobox. cmd.Parameters.AddWithValue("@itemname",ComboBox1.SelectedText);

@rebo: SelectedText only gives you the portion of text which was selected(like selection we do in ms-word) Text property gives you actual itemText of the Combobox

This example below is not exactly solves your issue but it:

  • Shows appropriate way of using disposable objects such as SqlConnection and SqlCommand
  • shows that you don't need to load Dataset, DataTable is enough in many cases
  • shows how to bind textbox to data

Using this, you can imagine, how easy would be to load another DataTable with single record and bind it. Or you can manually populate text boxes.

Another option, and this is interesting, is to load a Dataset with two tables - 1 combo lookup and another actual data. Establish relationship between them and bind controls. Then you will not have to go to DB every time you change value in combobox . You will need to refresh data sometimes but everything will be happening on the client.

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

Microsoft Logo

Gray Pipe

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

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

Вопрос

Этот вариант кода возвращает только одну строчку данных. Но а если их две, то все равно отображается только первая

Это видео мне тоже не помогло Видео

Ответы

Ну вот, все правильно, вы ComboBox не настроили. Посмотрите что такое SelectedValue. Ну и настройте корректно ValueMember. По второй ссылке весьма недурственный пример.

Все ответы

Если у вас в ComboBox данные грузятся целиком строкой из БД, то я бы показывая ФИО, искал бы по первичному ключу. Т.е. в ComboBox выбирают человека, вы модифицируете запрос вот так:

В этом случае у вас будет считана из базы только одна строка.

И, да, не надо добавлять возвращаемые столбцы в качестве параметров при Select-е.

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