日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

解决Extjs中Combobox显示值和真实值赋值问题

發布時間:2024/9/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 解决Extjs中Combobox显示值和真实值赋值问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用過Extjs的朋友相信都知道在Extjs的Combobox組件中是由兩個值來組成的。一個是displayField這個是用來顯示給我們看 的,而另一個是真正給系統用的valueField,舉個例子會更貼切一點。假如我們有一個下拉列表是公司選擇,那我們看到的option中的值應該是公 司的名稱,而實際提交給系統的值可能是公司的ID或者編碼之類的。而Extjs中的combobox也是同樣的道理,但是它只提供了一個 setValue()函數,我們在調用的時候發生的結果就是要么顯示的值和真實的值同是id,或者同是名稱。雖然同是id的時候系統可以正常運行,但這樣 用戶交互就顯示的友好了。相信大家都不明白你的1,2,3,代表首什么。

  在網上查了一下,有的朋友說可以用setvalue()/setRawValue( Mixed value ) 來分別完成,事實上我試了一次并沒有成功。查了下API中的解釋。

setRawValue( Mixed value ) : Mixed 躍過驗證直接設置DOM元素值。需要驗證的設值方法可以查看setValu... 躍過驗證直接設置DOM元素值。需要驗證的設值方法可以查看setValue。Sets the underlying DOM field's value directly, bypassing validation. To set the value with validation see setValue.

  如果我沒有理解錯的話這里應該是用于跳過驗證賦值的,也就是說你本來有些因為驗證不能通過的值可以通過這個函數來設置。(這里搞不懂為什么Ext官方會給這樣一個函數,既然都是不能驗證的那干嘛還要賦值)。

  在使用firebug分析生成的頁面的時候,發現真實的值是用一個隱藏的input來放置的。<input type=”hidden” id=”assistInfo.pid.id” name=”assistInfo.pid.id” value=”9″>既然這樣那我就用Ext.get()方法來試試,最終發現確實可以使用Ext.get()和form.getForm().findField()來分別賦值,考慮Ext.get()會造成新的內存損耗,故使用Ext.fly()代替,最終代碼如下:

win.form.getForm().findField('assistInfo.pid.id').setValue(config.curr.node.text);Ext.fly('assistInfo.pid.id').dom.value=config.curr.node.id;

2010-10-08 最新修改,以上這個方法還是有個問題。當你的 cbx獲得焦點而又沒有修改的時候,在離開時會將你的displayField的值填充給valueField這樣的話同樣會造成系統錯誤。而較好的解決 辦法為:使用Ext.data.Record.create({})去構建一個combobo的數據對象,并將這個值填充到combobo的 dataStore中,最后再調用setvalue這樣就可以完美地解決combobox初始值的問題了。

Ext.getCmp('userid').setRawValue(otherName); Ext.getCmp('userid').setValue(otherId); 這樣可以設置默認的name 和id了

總結

以上是生活随笔為你收集整理的解决Extjs中Combobox显示值和真实值赋值问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。