2014-07-26 2 views
0

2 콤보 박스의 표시 멤버를 보유하는 datagridview (dgv)가 있습니다. 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 [email protected]"; 
    string query2 = "SELECT Employee_TypeID FROM Employee_Type WHERE [email protected]"; 
    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; 
} 

답변

1

: 여기

는 콤보 선택된 값을 변경하기위한 코드입니다. dgvTypesRelation_CellContentClick 대신 dgvTypesRelation_CellClick에서이 코드를 사용해보십시오. 비주얼 스튜디오에 의해 설명 된

, "CellClick : 셀의 어떤 부분을 클릭 할 때 발생합니다"반면, "CellContentClick는 셀 내의 내용을 클릭 할 때 발생합니다"이 도움이

희망을!

관련 문제