我正在创建一个网络应用程序,其中我有一个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:index natex Out 范围。必须是非负的,并且小于 收藏。参数名称:索引
在这条线上
行329:fileupload fp = (fileupload)dgvedit.Rows [dgvedit.editindex] .findcontrol(" fptask");
以下代码有什么问题
显示此错误的背后原因是dgvEdit.Rows.Count<dgvEdit.EditIndex
中的CC_1。
您可以使用
之类的条件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;
}
}
n.b:在将服务器控件渲染到页面之前,请使用PreRender
事件执行任何更新。在此事件期间,可以保存服务器控件的视图状态的任何更改。在渲染阶段进行的此类更改将无法保存。
我认为您应该使用RowDataBound
。