DataGridView中comboBox(DataGridViewComboBoxColu
DataGridView中虽然绑定了一个comboBox,但是这个comboBox没有任何事件。
今天想加一个SelectedIndexChanged事件,遍寻网络后找到一可行方法,总结如下:
view plaincopy to clipboardprint?
DataGridViewComboBoxColu
dgView.Columns.Add(Fparmrangedesc);
dgView.EditingControlShowing += new DataGridViewEditingContr
//写事件方法
private void dgView_EditingControlShowing(object sender, DataGridViewEditingContr
{
}
private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
//里面想写什么你说了算!
}
DataGridViewComboBoxColu
……
……
dgView.Columns.Add(Fparmrangedesc);
dgView.EditingControlShowing += new DataGridViewEditingContr
写事件方法
private void dgView_EditingControlShowing(object sender, DataGridViewEditingContr
{
}
private void ComboBox_SelectedIndexChanged(object sender, EventArgs e)
{
//里面想写什么你说了算!
}
最后,最重要的一步:把DataGridView的CausesValidation属性一定要改为false.
原因是在选择下拉框时需要数据验证,可能报错
http://blog.sina.com.cn/s/blog_73fbac9a0100sjje.html
在实际使用中,我用cellvaluechanged 就实现了.
private void dataGridViewSN_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0)
{
if (dataGridViewSN.Columns[e.ColumnIndex].Name == "Status")
{
if (dataGridViewSN["Status", e.RowIndex].Value.ToString() == "Fail")
{
DataTable dtResult = new DataTable();
string strSql;
strSql = string.Format(SqlHelper.Instance.GetSql("QueryErrorCode"), comboActivity.Text);
dtResult = SqlHelper.Instance.executeSql(strSql);
DataGridViewComboBoxCell cb = (DataGridViewComboBoxCell)dataGridViewSN.Rows[e.RowIndex].Cells["Error_Code"];
cb.DataSource = dtResult;
cb.ValueMember = "Code";
cb.DisplayMember = "drop_desc";
cb.ReadOnly = false;
//dataGridViewSN.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
}
else
{
DataGridViewComboBoxCell cb = (DataGridViewComboBoxCell)dataGridViewSN.Rows[e.RowIndex].Cells["Error_Code"];
cb.Value = null;
cb.DataSource = null;
cb.Items.Clear();
cb.ReadOnly = true;
}
}
}
}