错误“索引超出范围”.在ASP.网络应用程序
本文关键字:ASP 网络 应用程序 范围 索引 错误 | 更新日期: 2023-09-27 17:53:38
我正在制作一个应用程序ASP。. Net/c#在那里我有一个Gridview与复选框在每一行。
问题是其中一些通过选择并点击"保存"出现以下错误:
索引超出范围。必须非负且小于集合的大小。' r ' n参数名称:index.
这个错误似乎只发生在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的目的是在数据库中注册所有被选中的行。
注释2:我广泛地搜索了一个Web解决方案,但所有提供的,没有一个解决我的问题。
谢谢!
[]的
你的一行应该是:
if (((CheckBox)grdListaVulsProj.Rows[cont].FindControl("chkSelecionaItem")).Checked) <<< WHERE THE ERROR OCCURS
我猜你的问题在这里:
if (((CheckBox)grdListaVulsProj.Rows[idVul]...
是idVul
真的索引到行集合,还是你的意思是使用cont
在那里?
我通常遇到的问题是,第0行实际上是标题和最后一行是页脚。
试试这样的比较:
if (grdListaVulsProj.Rows[cont].RowType == DataControlRowType.DataRow)
{
// your code here
}