2015-01-22 2 views
1

코드에서 datagridview에 확인란 열을 추가했으나 매번 확인란을 두 번 이상 선택하면 더 많은 확인란 열이 계속 만들어집니다. 어떻게 그렇게하지 못하게합니까? 아래 코드는 열을 추가하거나 선택하는 코드입니다. onload()는 확인란이 선택된 첫 번째 DataGridview로 두 번째 DataGridview onfeatureload()를로드합니다.datagridview 확인란 열 replication을 방지하는 방법

여기
 private void onload() 
    { 
     var connectionString = ConfigurationManager.ConnectionStrings["Pigen"].ConnectionString; 

     using (connection = new MySqlConnection(connectionString)) 
      if (this.OpenConnection() == true) 
      { 
       MySqlCommand sql = new MySqlCommand("sp_profgridview", connection); 
       sql.CommandType = CommandType.StoredProcedure; 
       mySqlDataAdapter = new MySqlDataAdapter(sql); 
       DataSet dp = new DataSet(); 
       mySqlDataAdapter.Fill(dp); 
       sql.ExecuteNonQuery(); 
       kryptonDataGridProf.DataSource = dp.Tables[0]; 
       kryptonDataGridProf.Columns[0].Visible = false; 
       kryptonDataGridProf.Columns[1].Width = 120; 
      //  kryptonDataGridProf.Columns[2].Width = 150; 

       //DataGridViewCheckBoxColumn chk = new DataGridViewCheckBoxColumn(); 
       //kryptonDataGridProf.Columns.Add(chk); 
       //chk.HeaderText = "Check Data"; 
       //chk.Name = "chk"; 
       //kryptonDataGridProf.Rows[0].Cells[0].Value = true; 

        DataGridViewCheckBoxColumn doWork = new DataGridViewCheckBoxColumn(); 
        doWork.HeaderText = "CHECK PROFILE"; 
        doWork.FalseValue = "0"; 
        doWork.TrueValue = "1"; 
        kryptonDataGridProf.Columns.Insert(3, doWork); 


      } 

여기에()

private void onfeatureload() 
    { 
     var connectionString = ConfigurationManager.ConnectionStrings["Pigen"].ConnectionString; 

     using (connection = new MySqlConnection(connectionString)) 
      if (this.OpenConnection() == true) 
      { 
       MySqlCommand sqlf = new MySqlCommand("sp_featgridview", connection); 
       sqlf.CommandType = CommandType.StoredProcedure; 
       mySqlDataAdapter = new MySqlDataAdapter(sqlf); 
       DataSet ds = new DataSet(); 
       mySqlDataAdapter.Fill(ds); 
       sqlf.ExecuteNonQuery(); 
       kryptonDataGridView2.DataSource = ds.Tables[0]; 
       kryptonDataGridView2.Columns[0].Visible = false; 
       kryptonDataGridView2.Columns[1].Width = 100; 

       DataGridViewCheckBoxColumn colCB = new DataGridViewCheckBoxColumn(); 
       DatagridViewCheckBoxHeaderCell cbH = new DatagridViewCheckBoxHeaderCell(); 
       colCB.HeaderText = "CHECK FEATURE"; 
       kryptonDataGridView2.Columns.Add(colCB); 

      } 
    } 

onfeatureload하고 최대 문제가 시작 먹으 렴, 각 시간 onfeatureload()가 두 번 checkkbox 열보다 더 체크 박스의 클릭에 의해로드 된이 방법은 추가 계속 내가 체크/선택 해제를 수행하면

private void kryptonDataGridProf_CellContentClick(object sender, DataGridViewCellEventArgs e) 
    { 

      DataGridViewCheckBoxCell ch1 = new DataGridViewCheckBoxCell(); 
      ch1 = (DataGridViewCheckBoxCell)kryptonDataGridProf.Rows[kryptonDataGridProf.CurrentRow.Index].Cells[0]; 

      if (ch1.Value == null) 
       ch1.Value = false; 
      switch (ch1.Value.ToString()) 
      { 
       case "True": 
        ch1.Value = false; 
        break; 
       case "False": 
        ch1.Value = true; 
        onfeatureload(); 

        break; 
      } 

      ch1.Value.ToString(); 
    } 
+0

당신은 (적어도)이 – tschmit007

+0

chechbox 열이있는 추가하기 전에 체크 박스 컬럼의 존재를 테스트하지만 다른 또 다른 추가 onfeatureload를 호출하기 때문에 2 개 이상 검사 후 – RichieCr7

+0

예를 추가 유지해야 ... – tschmit007

답변

0

당신이 DGV에서 그 존재를 확인할 수있는이 방법을 추가하기 전에 열 이름을 지정하는 것이 좋습니다.

DataGridViewCheckBoxColumn col = new DataGridViewCheckBoxColumn(); 
col.Name = "myColumn"; 
// Set any other desired properties ... 

if (!dataGridView1.Columns.Contains(col.Name)) 
{ 
    dataGridView1.Columns.Add(col); 
} 
+0

입니다.하지만 이미 그것을 해결했고, 어쨌든 당신의 것과 가까운 뭔가를 그리고 또한 foreach 문을 주어서 기본값으로 확인했습니다. 그래서 당신의 해답을 대답으로 적어 두겠습니다. – RichieCr7

+0

@ galaxybomb 다행스럽게도 그것을 알아낼 수있었습니다! – OhBeWise