このリンクは、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;
}
}
}