2011-08-19 80 views
2

我想實現的GridView中的複選框,GridView的複選框問題asp.net

此複選框的任務是驗證記錄,

當此驗證按鈕被按下,用檢查所有項目複選框被輸入到數據庫中

這是我的代碼:

protected void Button1_Click(object sender, EventArgs e) 
    { 

     foreach (GridViewRow row in GridView1.Rows) 
     { 

      CheckBox cbox = ((CheckBox)row.FindControl("Verify")); 

      if (cbox.Equals(true)) 
      { 
       String DraftsText = ((TextBox)row.FindControl("numDrafts")).Text; 
       String TCtext = ((TextBox)row.FindControl("numTC")).Text; 

       if (row.RowType == DataControlRowType.DataRow) 
       { 
        //Header trs = new Header(); 
        // GridView1.Rows[0].FindControl("numTC"); 
        if (TCtext != "" && DraftsText != "") 
        { 

         // try 
         // { 
         string date = row.Cells[4].Text; 

         DateTime dateTime = Convert.ToDateTime(date); 
         string dateFormatted = dateTime.ToString("d-MMM-yy"); 

         string unit = row.Cells[5].Text; 
         string currency = row.Cells[6].Text; 
         string totalFC = row.Cells[7].Text; 
         string totalDC = row.Cells[8].Text; 
         int d = Convert.ToInt32(DraftsText); 
         int tc = Convert.ToInt32(TCtext); 


         hdr = new Header(d, tc, dateFormatted, unit, currency, totalFC, totalDC); 
         hdr.InsertFCTC(hdr); 
        } 

       } 

      } 
     } 
    } 

我可能會在這個錯誤的方式,但在如果(cbox.Equals(真))可去它給了我一個例外:對象引用未設置爲對象的實例。

任何想法我能做些什麼來解決這個問題?

非常感謝

回答

1

if (cbox.Equals(true))應該if (cbox.Checked)

由於您cbox is a checkbox object它不能被用來比較,所以你必須使用cboxChecked屬性,它會返回true/false

+0

仍然給我對象引用不設置到對象的實例。 – Karl

+0

當您嘗試查找使用row.FindControl時,未找到該複選框...您必須發佈aspx標記以查找問題。 –

+0

好的問題解決了,我通過了錯誤的文本框ID&如果應該已經如你所說感謝 – Karl

1

你收到一個NullPointerException,因爲沒有找到建議的複選框!或者直接強制轉換爲CheckBox類型的實例不能按預期工作。

+0

好的問題解決了,我傳遞錯誤的文本框ID&如果應該已經如果(cbox.Checked) – Karl

1

更改您的代碼是這樣的,然後重試:

CheckBox cbox = ((CheckBox)row.FindControl("Verify")); 

      if (cbox != null && cbox.Checked) 
      { 
.... 
}