国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Extjs列表詳細信息窗口新建后自動加載解決方法

2019-11-21 00:36:47
字體:
來源:轉載
供稿:網友
在Extjs中,在當前頁面的grid頁新建了一行數據后,通過表單形式進入詳細頁面的編輯,此時,為了能讓頁面自動打開詳細頁面編輯,我花了三個小時,終于找到了在Extjs下最合適的方案,結果卻只有三句話,我想,這可能也是很多Extjs愛好者們想要知道或者已經知道的,為此,將其與大家分享,只求為extjs群體貢獻自己的一些想法。

列表在創建后,一般會有一個提示,現在我把我最開始的幾個思路與大家講講,想直接看結果的可以跳到最后一套方案~

方案1(放棄). 在新建數據后,向createform方法傳送一個id值。這可能是普通搞web的大蝦們最先想到的方法,通過傳參給一個detail頁,然后detail根據id再到庫中查找相應的數據,顯示在頁面上。可是,經過調查,發現頁面是通過當前頁面的子窗口的方式來顯示的,而子窗口的數據是通過grid中的每行數據來傳入的,如果要想顯示二級頁,首先要在grid中讀取出一條數據,將整體作為一條record傳值才可。而添加數據后,本身就是要更新列表的,還不如直接讀取列表中的最新一條數據,直接傳入,恩, 這就想到了第二套方案~

方案2(成功). 在數據創建并更新列表后,設定列表中的第一項(因為根據創建時間排序了的)為選中狀態,調用onEdit方法,相當于點擊了grid中的第一行數據并點編輯按鈕的效果(ps:我是不是很有才呀)。好了,在save數據的方法后面,調用grid.selModel.selectRow(0),然后grid.onEdit()(自己定義的編輯方法,通過grid.getSelectionModel().getSelected()取出已選的行,并將參數傳遞給form),要注意了,這里直接選中的話,是選的列表更新前的第一條(不是我們想要的更新后的第一條哦)~~因為store的load是異步加載的,哈哈,所以這里呢,要把這兩個方法放到setTimeout函數里面,像這樣:
復制代碼 代碼如下:

setTimeout(function(){
Ext.getCmp("gridPanel").sm.selectRow(0);
Ext.getCmp("gridPanel").onEdit();
},300);

設定一下延遲,然后再執行選擇和編輯方法就行啦。有沒有發現,這里我用的是getCmp,而不是this.grid?因為setTimeout在js中的作用域是全局的,所以如果在這里用了局部變量,js將會報錯“未定義的對象或者方法”??墒?,用的時候又發現一個問題,這個延遲時間感覺有點長了,而且,有延遲讓人感覺老是不爽,可不可以不用這個函數就搞定呢?于是乎,終極方案即將出爐啦!這是我冥思苦想無果但是無意中發現的方法哦,嘿嘿,有那么丁點投機取巧的感覺,大家不要笑我哦,哈哈~
我也是新手,剛學Extjs沒多久,而且js也不那么熟,估計擱熟手那,這些小問題都是雞毛蒜皮不當回事的,可是我想到這個后感覺還是挺有成就感的,高手直接略過,就別聽我 主站蜘蛛池模板: 宁夏| 锡林郭勒盟| 湟源县| 台州市| 兴文县| 建瓯市| 同仁县| 华池县| 和平区| 英超| 武穴市| 麟游县| 漾濞| 雅安市| 安阳县| 丰台区| 廉江市| 莱州市| 饶河县| 类乌齐县| 怀远县| 蓝山县| 南木林县| 兴安盟| 永新县| 津市市| 盐池县| 浙江省| 秦皇岛市| 西华县| 隆昌县| 邻水| 涟水县| 穆棱市| 玉门市| 海城市| 枝江市| 卫辉市| 万载县| 余干县| 博野县|