2014-10-02 3 views
4

У меня странная проблема. В основном у меня есть datagridview и кнопка. Когда я нажимаю эту кнопку, он проверяет все строки для значения столбца 1 - столбец флажка. Затем он устанавливает значение true/false в зависимости от того, что он в настоящее время.Флажок DatagridView Колонка всегда null

Thats all fine.

Но тогда у меня есть еще одна кнопка, чтобы что-то сделать с этими строками, которые отмечены галочкой. Я нажимаю на него, и он только когда-либо идентифицирует первую строку как галочку. Остальное, по-видимому, сейчас нет.

Итак, как я могу программировать значение столбца флажка в представлении datagrid, а затем читать его снова, заставляя Im, по-видимому, выйти из метки на основе моих результатов.

Это устанавливает клеща коробками, и я могу видеть их, снимите выделение их вручную и т.д.

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; 
      } 
     } 

Тогда следующая кнопка для проверки значения только нахождение обнуляет

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"); 
      } 
     } 
Смежные вопросы