(c# winforms sv2010 net4) На форме есть Datagridview1 с разными типами колонок: Combobox, TextBox (определены заранее). После запуска формы в Datagridview1 по кнопке "Добавить строку" добавляются строки (по одной). В коде "btn_AddRow_Click" в колонку DatagridviewCombobox загружается список значений из таблицы access "СПИСОК" из колонки1 "Название". В таблице access "СПИСОК" всего 4-ре колонки (пример ниже).
Название|Описание|Ед1|Ед2
аа|111|555|444
бб|222|222|777
Вопрос: Как после выбора значения из списка в DataGridViewComboBox (в добавленной строке в Datagridview1 это Column1), например, выбрано "аа", в DatagridviewTextBox (в Datagridview1 это Column2) вывести значение "111".
private void btn_AddRow_Click(object sender, EventArgs e)
{
int index = Datagridview1.Rows.Count;
index++;
Datagridview1.Rows.Add();
int nRowIndex = Datagridview1.Rows.Count - 1;
string connStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="c:\1.mdb";
string query = "";
query = "SELECT * FROM СПИСОК";
OleDbConnection cn = new OleDbConnection(connStr);
OleDbDataAdapter da = new OleDbDataAdapter(query, cn);
DataTable dt = new DataTable();
da.Fill(dt);
ArrayList StringList = new ArrayList();
foreach (DataRow item in dt.Rows)
{
StringList.Add(item["Название"].ToString());
}
DataGridViewComboBoxCell Col = (DataGridViewComboBoxCell)Datagridview1.Rows[nRowIndex].Cells["Column1"];
Col.Items.Clear();
Col.DataSource = StringList;
}
Получается так:(но как определить номер строки(вместо Rows[0]))?
private void Datagridview1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
string connStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="c:\1.mdb";
string query = "";
query = "SELECT * FROM СПИСОК";
OleDbConnection cn = new OleDbConnection(connStr);
OleDbDataAdapter da = new OleDbDataAdapter(query, cn);
DataTable dt = new DataTable();
da.Fill(dt);
if (Datagridview1.Rows[e.RowIndex].Cells["Column1"].Value != null)
{
if (Datagridview1.Rows[e.RowIndex].Cells["Column1"].Value.ToString().Length != 0)
{
string S = dt.Rows[0]["Описание"].ToString();
Datagridview1.Rows[e.RowIndex].Cells["Column2"].Value = S.ToString();
}
}
}
ComboBox cb;
DataGridViewCell currentCell;
private void Datagridview1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
if (cb != null)
{
cb.SelectionChangeCommitted -= new EventHandler(cb_SelectionChangeCommitted);
}
}
private void Datagridview1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
if (Datagridview1.CurrentCell.ColumnIndex == 1)
{
if (e.Control is ComboBox)
{
cb = (ComboBox)e.Control;
if (cb != null)
{
cb.SelectionChangeCommitted += new EventHandler(cb_SelectionChangeCommitted);
}
currentCell = Datagridview1.CurrentCell;
}
}
}
void cb_SelectionChangeCommitted(object sender, EventArgs e)
{
string connStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="1.mdb";
string query = "";
query = "SELECT * FROM СПИСОК";
OleDbConnection cn = new OleDbConnection(connStr);
OleDbDataAdapter da = new OleDbDataAdapter(query, cn);
DataTable dt = new DataTable();
da.Fill(dt);
DataRow[] findRow = dt.Select("Название = '" + cb.Text + "'");
Datagridview1[currentCell.ColumnIndex + 1, currentCell.RowIndex].Value = findRow[0]["Описание"].ToString();
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Подскажите пожалуйста как лучше написать скрипт движения персонажа в 2д игре с видом сверху так чтобы персонаж обходил или останавливался...
Ребят, решил после js изучать С#, сразу возникли сложностиНеобходимо перебрать двухмерный массив
У меня в решении два проектаВ главном проекте я могу обратиться к классу следующим образом:Microsoft
Возможно вопрос не совсем корректныйДопустим у нас имеется следующий код: