2014-10-02 89 views
4

我有一個奇怪的問題。 基本上我有一個datagridview和一個按鈕。當我點擊這個按鈕時,它會檢查列1s的所有行值 - 複選框列。然後根據當前的內容將其設置爲真/假。DatagridView複選框列始終爲空

這一切都很好。

但是,然後,我有另一個按鈕來做這些行被打勾的東西。我點擊它,它只能識別第一行被勾選。其餘的顯然現在是空的..?

那麼,我怎樣才能編程設置一個複選框列的值在一個DataGrid視圖,然後再次閱讀,因爲我顯然是基於我的結果標記的方式。

這將蜱boxs,我可以看到他們,他們的勾去掉手動等

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 2014-10-02 00:44:18

+0

您設置並讀取與普通組合框相同的數據。如果您希望我們告訴您您做錯了什麼,那麼我們需要查看您的代碼 – deathismyfriend 2014-10-02 00:50:39

+0

嘗試發佈您的代碼。這將幫助我們知道你已經嘗試了什麼,沒有。但是,我的假設是,您的模型沒有正確開發來存儲此複選框的結果。你是在數據綁定你的datagridview還是手動創建行? – 2014-10-02 01:10:29

回答

0

首先,

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

爲什麼字符串常量是「真」,但不是「真」?

二,在下一個按鈕點擊處理程序中,它是什麼「行」?

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