亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2010年04月02日 19:03:55   作者:  
有時候我們在新建列表中的一項(xiàng)后需要進(jìn)入立刻進(jìn)入詳細(xì)信息的編輯頁面,為了使得操作簡便,一般設(shè)定自動導(dǎo)向。
在Extjs中,在當(dāng)前頁面的grid頁新建了一行數(shù)據(jù)后,通過表單形式進(jìn)入詳細(xì)頁面的編輯,此時,為了能讓頁面自動打開詳細(xì)頁面編輯,我花了三個小時,終于找到了在Extjs下最合適的方案,結(jié)果卻只有三句話,我想,這可能也是很多Extjs愛好者們想要知道或者已經(jīng)知道的,為此,將其與大家分享,只求為extjs群體貢獻(xiàn)自己的一些想法。

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

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

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

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

設(shè)定一下延遲,然后再執(zhí)行選擇和編輯方法就行啦。有沒有發(fā)現(xiàn),這里我用的是getCmp,而不是this.grid?因?yàn)閟etTimeout在js中的作用域是全局的,所以如果在這里用了局部變量,js將會報錯“未定義的對象或者方法”。可是,用的時候又發(fā)現(xiàn)一個問題,這個延遲時間感覺有點(diǎn)長了,而且,有延遲讓人感覺老是不爽,可不可以不用這個函數(shù)就搞定呢?于是乎,終極方案即將出爐啦!這是我冥思苦想無果但是無意中發(fā)現(xiàn)的方法哦,嘿嘿,有那么丁點(diǎn)投機(jī)取巧的感覺,大家不要笑我哦,哈哈~
我也是新手,剛學(xué)Extjs沒多久,而且js也不那么熟,估計擱熟手那,這些小問題都是雞毛蒜皮不當(dāng)回事的,可是我想到這個后感覺還是挺有成就感的,高手直接略過,就別聽我啰嗦了,呵呵~
方案3(最佳). 在Extjs的message窗口的回調(diào)函數(shù)中選擇列表并打開詳細(xì)。這就是我的最佳方案。因?yàn)槲野l(fā)現(xiàn)Ext對Ext.Msg.alert()方法提供了四個參數(shù),分別是title,msg,fn,scope(見參考博文)其中,fn就是回調(diào)函數(shù)塊的內(nèi)容,在點(diǎn)擊按鈕后將調(diào)用該函數(shù),我把上面兩句代碼放在回調(diào)函數(shù)里,就解決了延遲加載和用戶體驗(yàn)的兩大問題,真是兩全其美,何樂而不為呢?
復(fù)制代碼 代碼如下:

Ext.Msg.alert("提示信息", "新建成功,請輸入詳細(xì)信息!", function() {
this.grid.sm.selectRow(0);
this.grid.onEdit();
}, this);

雖然看起來代碼沒幾行,可是卻消耗了我不少腦細(xì)胞啊,為了想出這個方案,試驗(yàn)并調(diào)試了幾十次,大家如果覺得有用,別忘頂貼哦~
解決問題的過程中,參考了以下博文:
ExtJS Ext.MessageBox.alert()彈出對話框詳解

相關(guān)文章

最新評論