[英]index was out of range in asp.net gridview
我正在创建一个Web应用程序,其中有一个gridview,并且在预渲染方法上,我有以下代码
protected void dgvEdit_PreRender(object sender, EventArgs e)
{
if (this.dgvEdit.EditIndex != -1)
{
FileUpload fp = (FileUpload)dgvEdit.Rows[dgvEdit.EditIndex].FindControl("fpTask");
if (fp != null)
{
// You can apply condition here
fp.Enabled = true;
}
}
}
但页面显示错误
索引超出范围。 必须为非负数并且小于集合的大小。 参数名称:索引
说明:执行当前Web请求期间发生未处理的异常。 请查看堆栈跟踪,以获取有关错误及其在代码中起源的更多信息。
异常详细信息:System.ArgumentOutOfRangeException:索引超出范围。 必须为非负数并且小于集合的大小。 参数名称:索引
在这条线上
第329行:FileUpload fp =(FileUpload)dgvEdit.Rows [dgvEdit.EditIndex] .FindControl(“ fpTask”);
以下代码有什么问题
显示此错误的原因是Line No 329
dgvEdit.Rows.Count<dgvEdit.EditIndex
。
您可以使用类似
if (this.dgvEdit.EditIndex != -1 && dgvEdit.Rows.Count>=dgvEdit.EditIndex)
{
FileUpload fp = (FileUpload)dgvEdit.Rows[dgvEdit.EditIndex].FindControl("fpTask");
if (fp != null)
{
// You can apply condition here
fp.Enabled = true;
}
}
注意:在服务器控件呈现到页面之前,请使用PreRender
事件执行任何更新。 在此事件期间,可以保存服务器控件的视图状态的任何更改。 在渲染阶段所做的此类更改将不会保存。
我认为您应该为此使用RowDataBound
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.