繁体   English   中英

索引超出了asp.net gridview的范围

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM