环境:
asp:Repeater 循环输出 ASPxGridView 控件,asp:Repeater 绑定的值根据过滤条件动态生成
看考界面:
注:选择不同的分类菜单项,asp:repeater的绑定值不同;
问题现象:
当对表格(ASPxGridView)进行刷新或者翻页操作时 报错 “未能找到回调的目标 XX 或未实现 ICallbackEventHandler。”
ASPxGridView AJAx动作原理:
在执行表格(ASPxGridView)刷新或者换页操作时,虽然是表格的ajax操作,但是服务端仍然会执行Page_Load事件,而且在该事件中需要把客户端展现的元素在服务器端还原,以便服务端对应识别 客户端对 哪个元素的动作请求。
错误原因:
上面说道asp:Repeater的绑定数据是在点击分类菜单时动态生成的。后台的代码实现,在菜单点击事件中,获取菜单点击类别,生成数据,绑定给asp:Repeater控件,然后再界面中循环输出aspxGridView。当执行aspxGridView的ajax动作时,这个时候在Page_Load的事件中不能把客户端展现的元素(AspxGridView)在服务端还原,服务端无法对应识别客户端对特定元素的动作,所以报错;
解决方法:
在Page_Load中生成asp:Repeater需要的数据,绑定给它,以便在服务端还原客户端的元素。
其他:
由于AspxGridView在执行无刷新动作时,服务端仍然需要执行Page_Load事件,从这里也可以看出,AspxGridView的界面无刷新(ajax)动作,并不能缓解服务端的压力。且webform这类控件都有类似的问题。