此链接说明了如何通过ASPxGridView.AfterPerformCallback事件在服务器端处理它:
http://www.devexpress.com/Support/Center/p/Q274366.aspx
我如何在客户端处理它?</ p>
我正在开发一个自定义服务器控件,我在我的控件上有这个客户端功能:
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()。
提前致谢。
编辑(感谢菲利普的解决方案):
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;
}
}
}
答案 0 :(得分:3)
theGridView_AfterPerformCallback
中添加JSProperties
集合的条目,例如cp_FilterApplied
。 EndCallback
客户端事件处理程序。 EndCallback
,则在this.filterAppliedEvent()
处理程序中执行cp_FilterApplied
。 filterAppliedEvent
方法。 查看我对this question的答案以获取代码示例。
这真的是同样的问题,只需在theGridView_AfterPerformCallback
而不是ASPxGridView1_RowUpdated
中设置js属性,并根据需要调整名称/ js代码。