ASP.Net应用程序中的“索引超出范围”错误

时间:2011-04-29 13:36:12

标签: c# asp.net gridview indexing range

我正在制作ASP.Net / C#应用程序,其中每行都有一个带复选框的Gridview。

问题是其中一些通过选择并单击“保存”发生以下错误:

指数超出范围。必须是非负数且小于集合的大小。 \ 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 Properties的

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

注意:Gridview旨在在数据库中注册所有选定的行。

注2:我广泛搜索了一个Web解决方案,但所有内容都没有解决我的问题。

谢谢!

[]的

3 个答案:

答案 0 :(得分:3)

你的行应该是:

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

答案 1 :(得分:2)

我猜你的问题就在这里:

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

idVul真的是行集合的索引,或者你的意思是在那里使用cont吗?

答案 2 :(得分:0)

我经常遇到的问题是第0行实际上是标题,最后一行是页脚。

尝试这样的比较:

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