У меня есть два DataGridViewComboBoxColumns, один для элементов, а другой для типов количества элемента; (тонна, кг, метр и т. д.) выбранного элемента.
Я хочу, чтобы второй DataGridViewComboBoxColumn был заполнен типом количества для выбранного элемента в первом поле со списком.
Это отлично работает со странной проблемой; когда я выбираю элемент из первого поля со списком, его количество будет заполнено нормально, и я могу выбрать требуемый тип количества. Но когда я перехожу к следующей строке, чтобы добавить еще один элемент; Я выбираю товар, и при выборе типа его количества предыдущее выбранное количество исчезает. Я застрял в этой проблеме с трех дней, не могли бы вы помочь. Ниже приведен мой код, я использую события EditingControlShowing и SelectionChangeCommitted.
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
//if (dataGridView1.CurrentCell.ColumnIndex == 0)
//{
if (dataGridView1.CurrentCell.ColumnIndex == 0 && e.Control is ComboBox)
{
cbxItemCode = e.Control as ComboBox;
cbxItemCode.SelectionChangeCommitted -= new EventHandler(cbxItemCode_SelectionChangeCommitted);
cbxItemCode.SelectionChangeCommitted += new EventHandler(cbxItemCode_SelectionChangeCommitted);
} else
{
cbxItemCode.SelectionChangeCommitted -= new EventHandler(cbxItemCode_SelectionChangeCommitted);
}
}
и это код SelectionChangeCommitted:
private void cbxItemCode_SelectionChangeCommitted(object sender, EventArgs e)
{
ComboBox cmbBox = (ComboBox)sender;
if (cmbBox != null)
{
int intValue = Convert.ToInt16(cmbBox.SelectedValue);
populateQuantyDescColumn(intValue);
}
}
Событие SelectionChangeCommitted вызовет populateQuantityDescColumn(intValue), передав ему код элемента:
public void populateQuantyDescColumn(int ItmsID)
{
if (!(con.State == ConnectionState.Open))
{
con.Open();
}
MySqlCommand sc = new MySqlCommand("select qty.id, qty.Ar_Desc from minierp_db.itemquantity as iq, " +
" minierp_db.quantity as qty, minierp_db.items as it " +
" where it.id = iq.items_id and qty.id = iq.quantity_id and " +
" it.id = " + ItmsID, con);
MySqlDataReader reader;
try
{
reader = sc.ExecuteReader();
DataTable dt = new DataTable();
//dt.Clear();
dt.Columns.Add("id", typeof(string));
dt.Columns.Add("Ar_Desc", typeof(string));
dt.Load(reader);
qty_desc.ValueMember = "id";
qty_desc.DisplayMember = "ar_desc";
qty_desc.DataSource = dt;
}
catch (Exception e)
{
MessageBox.Show("Exception - populateQuantyDescColumn(): " + e.Message + e.Source);
}
finally
{
con.Close();
}
} //populateQuantyDescColumn
любая помощь будет оценена, спасибо заранее.