2

このリンクは、ASPxGridView.AfterPerformCallback イベントを介してサーバー側で処理する方法を説明しています。

http://www.devexpress.com/Support/Center/p/Q274366.aspx

クライアント側でどのように処理できますか?

私はカスタムサーバーコントロールに取り組んでおり、コントロールにこのクライアント側機能があります:

    applyFilterToGridView: function () {
        this.theGridView.ApplyFilter(this.filterCondition); 
        this.filterAppliedEvent();
    }

ApplyFilter はコールバックを実行するため、 this.filterAppliedEvent() は、フィルタリングが完了した後でなければならない適切なタイミングで呼び出されません。this.filterAppliedEvent() はクライアント側の関数です。

このイベントは、フィルターが適用された後に発生します。

protected void theGridView_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            if (e.CallbackName == "APPLYFILTER")
            {
            }
        }

クライアントに AfterPerformCallback イベントから filterAppliedEvent を呼び出すように指示する方法はありますか?

可能であれば、クライアント側で AfterPerformCallback の後に this.filterAppliedEvent() を実行できるようにしたいと考えています。

前もって感謝します。

編集(Filipのおかげで解決):

C#:

  protected void theGridView_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            if (e.CallbackName == "APPLYFILTER")
            {
                ASPxGridView gv = sender as ASPxGridView;
                gv.JSProperties["cp_FilterApplied"] = "true";
                gv.JSProperties["cp_VisibleRowCount"] = gv.VisibleRowCount;
            }
        }

theGridView.ClientSideEvents.EndCallback = "function(s,e){"theGridView.theGridView_OnEndCallback(s, e);}";

JS:

theGridView_OnEndCallback: function (s, e) {
    if (s.cp_FilterApplied) {
        if (s.cp_FilterApplied.indexOf('true') != -1) {
            this.adjustGridViewSize();/*Uses visible row count.*/
            delete s.cp_FilterApplied;
        }
    }
}
4

1 に答える 1

3
  1. コレクションにエントリtheGridView_AfterPerformCallbackを追加します。JSPropertiescp_FilterApplied
  2. EndCallbackクライアント側のイベント ハンドラーを追加します。
  3. EndCallbackハンドラーで存在するthis.filterAppliedEvent()場合に実行cp_FilterAppliedします。
  4. 後続のコールバックがメソッドを実行しないように、そのプロパティを削除しますfilterAppliedEvent

コード例については、この質問に対する私の回答をご覧ください。それは本当に同じ問題です。theGridView_AfterPerformCallback代わりにjs プロパティを設定ASPxGridView1_RowUpdatedし、必要に応じて名前/js コードを調整するだけです。

于 2012-08-04T09:55:45.290 に答える