4

コンボボックスの値が変更されるたびに更新する必要があるDevExpressグリッドがあります。たとえば、グリッドのページサイズを設定するコンボボックスがあります。要件の1つは、コンボボックスが完全なポストバックを引き起こさないことです。

コンボボックスは次のように宣言されます。

    <asp:DropDownList ID="cboPages" AutoPostBack="false" runat="server" 
EnableViewState="false" OnSelectedIndexChanged="cboPages_SelectedIndexChanged" />

選択されたインデックスが変更されると、その値が選択された値であるCookieが設定されます。コンボボックスの値が変更されると、javascript関数が呼び出されます。

function PerformCallbackOnGrid(grid) {
    try {
        grid.PerformCallback("refresh");
    }
    catch(err){
        alert('Could not perform callback on grid.');
    }
}

この関数は、コードビハインドに添付されています。

this.cboPages.Attributes["onChange"] = "PerformCallbackOnGrid(" + this.GridClientID + ")";

これらの手順を実行した後:

  1. ユーザーがコンボボックスを使用してグリッドページサイズを変更するため、PerformCallbackが少なくとも1回呼び出されます。
  2. ユーザーがF5(更新)を押します。
  3. ユーザーがページサイズを再度変更しようとしました。

「無効なビューステート」エラーメッセージが表示されます。

グリッドのViewStateModeをDisabledに設定してみましたが、EnableViewState="false"も設定しました。

4

1 に答える 1

3

自分で考え出した!どうやらそれは設定するのに十分でした

EnableViewState="false" EnableRowsCache="false"

グリッドに。

行キャッシュがビューステートエラーの原因でした。

于 2010-12-16T15:42:26.627 に答える