我有两个DataGridViewComboBoxColumns,一个用于Items,另一个用于项目的数量类型; (Ton,Kg,Meter等)所选项目。
我想要在第一个组合框中使用所选项的数量类型填充第二个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
任何帮助将不胜感激,谢谢你。