2011-04-29 45 views
1

我正在做一個應用程序ASP.Net/C#,其中我有一個GridView複選框在每一行。錯誤「索引超出範圍」在ASP.Net應用程序

的問題是,通過選擇並點擊「保存」下面的錯誤他們中的一些情況:

指數超出範圍。必須是非負數且小於集合的大小。 \ r \ n參數名稱:索引。

而這個錯誤似乎只發生在Gridview的最後一行。後續的編碼和屬性窗口的GridView的片段:

C#

protected void btnOKVulsProj_Click(object sender, EventArgs e) 
    { 

      //Variables 

     for (int cont = 0; cont < grdListaVulsProj.Rows.Count; cont++) 
     { 
      idVul = Convert.ToInt32((grdListaVulsProj.Rows[cont].Cells[0]).Text); 

      string strQueryInsert = ("INSERT TO DATABASE"); 

      if (((CheckBox)grdListaVulsProj.Rows[idVul].FindControl("chkSelecionaItem")).Checked) <<< WHERE THE ERROR OCCURS 

      { 
       Conexao.Inserir(strQueryInsert); //Method that performs the insertion 
      } 
     }; 

      //Other instructions 

    } 



的GridView屬性的

http://i56.tinypic.com/33f3hqf.jpg

注:GridView的目的是在註冊數據庫將選擇所有行。注2:我廣泛搜索了一個Web解決方案,但都提出了,他們都沒有解決我的問題。

謝謝!

[]的

回答

3

您的線路應該是:

if (((CheckBox)grdListaVulsProj.Rows[cont].FindControl("chkSelecionaItem")).Checked) <<< WHERE THE ERROR OCCURS 
+0

這真的使更多的意義 – 2011-04-29 13:48:52

+0

非常感謝你的fantasticfix。這解決了我的問題。一個簡單的邏輯錯誤,也許是因爲我是初學者:P – 2011-04-29 14:10:57

2

我猜你的問題是在這裏:

if (((CheckBox)grdListaVulsProj.Rows[idVul]... 

idVul真正的索引,行集合,還是你的意思是使用cont呢?

+0

我認爲這是正確的做法,但上面的一個更有意義。 (y) – 2011-04-29 14:17:42

0

我經常遇到的問題是該行0實際上是頭部和最後一行是頁腳。

嘗試比較像這樣:

if (grdListaVulsProj.Rows[cont].RowType == DataControlRowType.DataRow) 
{ 
// your code here 
} 
+0

不瞭解這種形式,那麼我也會測試它。 Thaks答覆 – 2011-04-29 14:15:15