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フォーカスを維持します。