コンボボックスの値が変更されるたびに更新する必要がある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 + ")";
これらの手順を実行した後:
- ユーザーがコンボボックスを使用してグリッドページサイズを変更するため、PerformCallbackが少なくとも1回呼び出されます。
- ユーザーがF5(更新)を押します。
- ユーザーがページサイズを再度変更しようとしました。
「無効なビューステート」エラーメッセージが表示されます。
グリッドのViewStateModeをDisabledに設定してみましたが、EnableViewState="false"も設定しました。