1

何日も探していましたが、その理由を絞り込むことはできません。私はそれについて十分に読み、提案を見てきましたが、この特定の問題を解決するものはないようです。

updatepanel に Gridview コントロールを含む asp.net ページがあります。いくつかのバインドされたテキスト ボックス フィールドである Gridview には特別なことはありません。Gridview は、コード ビハインドのデータ テーブルによって読み込まれます。

列の値の 1 つに基づいてセルの背景色を変更するまで、すべて正常に動作します。以下のコードを削除すると、viewstate エラーは発生しません。

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

protected void PCM_Grid_RowDataBound(オブジェクト送信者、GridViewRowEventArgs e) {

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

//以下のようにグリッドビューの値を取得してみてください

文字列 DisableUpdateCCCat = e.Row.Cells[6].Text;

if(DisableUpdateCCCat=="Y")

{

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

}

}

}

于 2013-11-01T05:17:34.967 に答える