簡體   English   中英

通過單擊datagridview行更新組合框中的選定值

[英]Updating selected value in combobox by clicking datagridview row

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

我很確定我也犯了這個錯誤。 嘗試在dgvTypesRelation_CellClick下而不是dgvTypesRelation_CellContentClick下使用此代碼。

由Visual Studio描述,“ CellContentClick :在單擊單元格中的內容時發生”,而“ CellClick :在單擊單元格的任何部分時發生”

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM