通过单击datagridview行更新组合框中的选定值

本文关键字:组合 单击 datagridview 更新 | 更新日期: 2023-09-27 18:14:48

我有一个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;
}

通过单击datagridview行更新组合框中的选定值

我很确定我也犯过这样的错误。请尝试在dgvTypesRelation_CellClick而不是dgvTypesRelation_CellContentClick下使用此代码。

由Visual Studio描述," CellContentClick:在单击单元格内的内容时发生",而" CellClick:在单击单元格的任何部分时发生"

希望这对你有帮助!