目前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=你的數據這樣就可以實現多個實例共用了!
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26826.html