众所周知,ExtJS GridPanel 查询数据最常用的方法是使用 Store 的 load 函数.
使用 store.load 函数返回值类型为 boolean, 单单一个 boolean 是无法满足我们的需求的,如果 load 调用后台方法没有有异常并且有数据的话那还好办, 如果有异常我们需要提示用户有异常, 如果没有数据返回我们也需要提示用户没有找到数据, 而这些从数据返回的信息我们都需要在前台显示.
ExtJS 中可以看到 load 函数提供了有三个参数的回调函数,但是没有类似 form 的 action.result 的参数可以取得后台传来的信息
- callback : Function
- A function to be called after the Records have been loaded. The callback is called after the load event is fired, and is passed the following arguments:
- r : Ext.data.Record[] An Array of Records loaded.
- options : Options object from the load call.
- success : Boolean success indicator.
要说还是 firefox 好, 通过 firebug 调试可以发现在 this.reader.jsonData 中包含了后台的值,比如后台将信息保存在 message 变量中, 就可以通过 this.reader.jsonData.message 取得值, 现将解决代码贴上
- this.getStore().load({
- callback:function(r,options,success){
- if(success == false) {
- Ext.Msg.alert(msg_information,this.reader.jsonData.message);
- } else {
- if(r.length == 0) {
- Ext.Msg.alert(msg_information,msg_nodata_found);
- }
- }
- }
- });