我有一个datagridview(dgv),它保存2个组合框的显示成员,dgv用于显示这些组合框之间的1-n n-1关系。
我编写了一个代码,用于在gridview中按下行时更改组合框中的选定值。它不是一直在工作,我的意思是当我按下时它会更新每列;但不要每次都改变它们。
例如:点击第1,2,3,4行,没有任何反应;开始点击行,代码开始工作;然后它不再工作等等。
这是更改组合框选择值的代码:
private void dgvTypesRelation_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
string empType = Header.returnItemInGrid(dgvTypesRelation.SelectedRows, 0);
string reqType = Header.returnItemInGrid(dgvTypesRelation.SelectedRows, 1);
string query1 = "SELECT Request_TypeID FROM Request_Type WHERE Request_Type=@r";
string query2 = "SELECT Employee_TypeID FROM Employee_Type WHERE Employee_Type=@e";
int req, emp;
DataTable result = new DataTable();
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(query1, conn))
{
cmd.Parameters.AddWithValue("@r", reqType);
using (SqlDataReader dr = cmd.ExecuteReader())
{
result.Load(dr);
}
req = Convert.ToInt32(result.Rows[0]["Request_TypeID"]);
cmd.CommandText = query2;
cmd.Parameters.AddWithValue("@e", empType);
result = new DataTable();
using (SqlDataReader dr = cmd.ExecuteReader())
{
result.Load(dr);
}
emp = Convert.ToInt32(result.Rows[0]["Employee_TypeID"]);
}
}
cmbxRequestConnect.SelectedValue = req;
cmbxEmployeeConnect.SelectedValue = emp;
chkbxRemove.Checked = true;
}
答案 0 :(得分:1)
我很确定我也曾犯过这个错误。请尝试在dgvTypesRelation_CellClick
下使用此代码,而不是dgvTypesRelation_CellContentClick
。
由Visual Studio描述,“CellContentClick
:在单击单元格中的内容时发生”,而“CellClick
:在单击单元格的任何部分时发生“
希望这有帮助!