2014-10-02 8 views
4

이상한 문제가 있습니다. 기본적으로 DataGridview와 버튼이 있습니다. 이 버튼을 클릭하면 열 1s 값의 모든 행, 즉 확인란 열을 검사합니다. 그런 다음 현재 상태에 따라 참/거짓으로 설정합니다.DatagridView 확인란 열이 항상 null입니다.

그게 전부 괜찮아요.

그러나 그렇다면이 행에 뭔가 다른 작업을하는 버튼이 있습니다. 나는 그것을 클릭하고 오직 첫 번째 행을 틱 표시로 식별합니다. 나머지는 이제 분명히 null입니다.?

DataGrid보기에서 확인란 열의 값을 프로그래밍 방식으로 설정 한 다음 다시 읽으면 내 결과에 따라 마크에서 분명히 벗어납니다.

이 틱 박스를 설정하고 나는, 수동 등

foreach (DataGridViewRow row in dgv.Rows) 
     { 
      var ch1 = new DataGridViewCheckBoxCell(); 
      ch1 = (DataGridViewCheckBoxCell)row.Cells[0]; 

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

다음 값을 확인하기 위해 다음 버튼을 그냥 찾는 널 (null)

foreach (DataGridViewRow row in rows) 
      { 
       var ch1 = new DataGridViewCheckBoxCell(); 
       ch1 = (DataGridViewCheckBoxCell)row.Cells[0]; 

       if (ch1.Value == null) 
        ch1.Value = false; 
       switch (ch1.Value.ToString()) 
       { 
        case "True": 
         ch1.Value = true; 
         break; 
        case "False": 
         ch1.Value = false; 
         break; 
       } 
       var val = row.Cells["EbayListingID"].Value.ToString(); 
       if (ch1.Value.ToString() == "true") continue; 
       var listing = dsEntities.EbayListings.First(x => x.EbayListingID.ToString() == val); 
       SubmitListingForReview(listing, false); 
      } 
+0

을하지만, 우리는 뭐가 잘못 됐는지 알 수 없다 그것. – jmcilhinney

+0

일반 콤보 상자와 동일한 데이터를 설정하고 읽습니다. 우리가 당신이 뭘 잘못하고 있는지 알려주고 싶다면 코드를보아야합니다 – deathismyfriend

+0

코드 게시를 시도하십시오. 이것은 우리가 당신이 시도한 것과하지 않은 것을 아는 데 도움이 될 것입니다. 그러나 내 가정은이 확인란의 결과를 저장하기 위해 모델이 제대로 개발되지 않았다는 것입니다. datagridview를 데이터 바인딩하거나 수동으로 행을 만들고 있습니까? –

답변

0

먼저 그들을을 선택 취소, 그들을 볼 수 있습니다

if (ch1.Value.ToString() == "true") continue; 

왜 문자열 상수가 "true"이지만 "True"가 아닙니다.

둘째, 다음 버튼 클릭 처리기에서 "행"이란 무엇입니까?

foreach (DataGridViewRow row in rows) 

나는이 코드를 시도하고 잘 작동 : 우리는 당신이 무슨 일을하는지 모른다면, 당신은 아마 뭔가 잘못하고있다

private void button1_Click(object sender, EventArgs e) 
     { 
      foreach (DataGridViewRow row in dataGridView1.Rows) 
      { 
       var ch1 = new DataGridViewCheckBoxCell(); 
       ch1 = (DataGridViewCheckBoxCell)row.Cells[0]; 

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

private void button2_Click(object sender, EventArgs e) 
     { 
      foreach (DataGridViewRow row in dataGridView1.Rows) 
      { 
       var ch1 = new DataGridViewCheckBoxCell(); 
       ch1 = (DataGridViewCheckBoxCell)row.Cells[0]; 

       if (ch1.Value == null) 
        ch1.Value = false; 
       switch (ch1.Value.ToString()) 
       { 
        case "True": 
         ch1.Value = true; 
         break; 
        case "False": 
         ch1.Value = false; 
         break; 
       } 
       var val = row.Cells[1].Value; 
       if (ch1.Value.ToString() == "True") continue; 
       MessageBox.Show("1"); 
      } 
     }