ASPxGridView
イベントOnFocusedRowChanged
を使用して、画面上の他のコンポーネントからのデータをフィルタリングすることは非常に一般的です。
問題は、テーブルがソートされるとFocusedRowIndex
、 を変更することによってプロパティが保持され、KeyValue
その結果、使用する引数フィルターが失われることです。
この問題を回避するには?
ASPxGridView
イベントOnFocusedRowChanged
を使用して、画面上の他のコンポーネントからのデータをフィルタリングすることは非常に一般的です。
問題は、テーブルがソートされるとFocusedRowIndex
、 を変更することによってプロパティが保持され、KeyValue
その結果、使用する引数フィルターが失われることです。
この問題を回避するには?
がASPxGridView
ソートされると、コールバックが実行されます。
この問題を回避するにはAfterPerformCallback
、次のコードを使用してサーバー側のイベントを処理してください。
int rowIndex = (sender as ASPxGridView).FindVisibleIndexByKeyValue(keyValue);
(sender as ASPxGridView).FocusedRowIndex = (rowIndex == ASPxGridView.InvalidRowIndex) ? -1 : rowIndex;
説明します:KeyValue
画面上の他のコンポーネントのデータをフィルター処理するために使用されるの値をSession
内または 内に保持しますASPxHiddenField
。
の値がkeyValue
見つからない場合、FocusedRowIndex
を -1 に設定します (行のフォーカスを外します)。それ以外の場合は、常に同じkeyValue
フォーカスを維持します。