目前Ext Grid的RowExpander使用的模板是在读取Grid同步加载实际上这样的处理并不是很好如果数据量大的话对性能会有一定影响更好的处理方式是异步加载只有需要的时候再加载需要的数据下面介绍如果实现 一下载此文件%Fexample%Ezip 这是国外一个朋友扩展的RowExpander我对比了几种处理方式他这个写的最简洁而且最容易使用所以推荐大家使用他的RowExpander他的Blog主页CEEFAD 二将下载的压缩文件用WinRar或者别的压缩文件解压缩将rowexpander_example\resources\js\custom目录中的RowExpanderjs加入你要用的页面中这个就是我们要使用的RowExpander 三在页面中使用这个RowExpander其实就是在想使用RowExpander的页面中实例化这个RowExpander实现异步加载数据的方法在你定义好了自己的Grid的前提下使用的具体代码示例如下 // RowExpander实例化 var expander = new ExtgridRowExpander( { remoteDataMethod :getRemoteData }) //调用远程数据函数 function getRemoteData(){ //你要实现的调用远程数据的代码 //更新数据到页面中最终数据显示靠这个实现必须使用!! ExtgetDom(remData + index)innerHTML = 得到的数据; } 实际上已经有很完整的示例在那位作者的程序中了rowexpander_example\resources\js\custom\gridtestjs 注意问题 这个远程方法最后是通过innerHTML 方法把得到的数据显示在页面中如果页面使用了多个Grid创建了多个RowExpander实例那么就需要修改RowExpanderjs里面的一点代码了否则一直显示数据在一个DIV中同时页面中也要区别要把数据显示在哪个DIV中 修改RowExpander中的beforeExpand将if (thisremoteDataMethod) {}中原来的代码修改成你要显示的DIV原来的DIV名字为remData修改成你想用的名字如果是多个RowExpander实例根据自己需要判断生成多个不同名字的DIV 页面显示数据在不同的DIV中主要就是将数据innerHTML 在哪个DIV中根据自己的需要判断后调用ExtgetDom(你的DIV编号 + index)innerHTML=你的数据这样就可以实现多个实例共用了! |