索引在ASP.NET GridView中超出范围



我正在创建一个网络应用程序,其中我有一个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

最新更新