1

一直在寻找几天,但无法缩小原因。我已经阅读了足够多的内容,并看到了一些建议,但似乎没有一个能解决这个特定问题。

我在更新面板中有一个带有 Gridview 控件的 asp.net 页面。Gridview 没什么特别的,有几个绑定的文本框字段。Gridview 由后面代码中的数据表加载。

一切正常,直到我根据列值之一更改单元格的背景颜色。如果我删除下面的代码,那么我不会收到视图状态错误。

OnRowDataBound 代码:

    protected void PCM_Grid_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
             //check if we are allowed to edit
            if (DataBinder.Eval(e.Row.DataItem, "DisableUpdateCCCat").ToString() == "Y")
            {
                e.Row.Cells[8].BackColor = System.Drawing.Color.Silver; //Silver out Cat column
            }
        }
    }

一旦我在上面应用格式,并说单击“保存”按钮,我就会收到错误消息:

0x800a139e - JavaScript runtime error: Sys.WebForms.PageRequestManagerServerErrorException:
Failed to load viewstate.  The control tree into which viewstate is being loaded must match the
control tree that was used to save viewstate during the previous request.  For example, when
adding controls dynamically, the controls added during a post-back must match the type and
position of the controls added during the initial request.

我确实在某处读过,您需要通过以下方式更新 UpdatePanel 中的视图状态

UpdatePanel.Update();

但错误仍然发生。

有什么想法/帮助吗?

任何回复都非常感谢

4

1 回答 1

0

受保护的无效PCM_Grid_RowDataBound(对象发送者,GridViewRowEventArgs e){

if (e.Row.RowType == DataControlRowType.DataRow) {

//尝试获取gridview的值如下

字符串 DisableUpdateCCCat = e.Row.Cells[6].Text;

if(DisableUpdateCCCat=="Y")

{

e.Row.Cells[6].BackColor = System.Drawing.Color.Silver;

}

}

}

于 2013-11-01T05:17:34.967 回答