2014-05-08 95 views
0

我使用ExtJS 4.2.1.883來構建具有RowEditing功能的網格。儘管我會閱讀文檔並廣泛搜索網頁,但我一直在爲此苦苦掙扎幾天。間歇組合框問題

手頭的問題:在我格列一個是像這樣定義一個ComboBox:

Ext.define('myapp.view.editor.MyComboBox', { 
    extend: 'Ext.form.field.ComboBox', 
    alias: 'widget.my-combo-box', 

    triggerAction: 'all', 
    queryMode: 'local', 
    displayField: 'ShortName', 
    valueField: 'Identity', 
    store: Ext.create('myapp.store.business.MyStore'), 

    editable: false, 
    forceSelection: true, 
    emptyText: 'Select an item...', 
    multiSelect: false 
}); 

其對應的店面擴展Ext.data.Store並具有autoLoad: true。它是由一個非常簡單的模型支持的,只有三個type: 'string'字段,並且其身份字段設置爲idProperty: 'Identity'

現在,當我雙擊要編輯的網格中的記錄時,間歇性地將組合字段變爲空(雖然它在雙擊前有一個值);更糟糕的是,那之後組合將不會打開。即使我關閉然後重新打開編輯器。我間歇地說,因爲我無法可靠地重現此行爲。有時候就是這樣。有時它不會,無論我多次召喚行編輯。還要注意來自商店的數據沒有變化,它是一個穩定的數據集,爲了測試目的而從以前的系統版本遷移過來。

昨天我看到另一個事件看起來像一個bug:組合中的第一個條目被複制。我重新檢查了後端,以確保它只發送記錄的一個實例。今天,在簡單地重新加載應用程序的Web UI之後,即使代碼在一夜之間沒有改變,我也無法重現這一點。

[編輯]我的Chrome控制檯中沒有錯誤或警告。

ComboBox部分是否存在這種行爲的正當理由?我如何使其行爲正確?

我也想知道如果轉到更高版本的ExtJS 4會是明智的,錯誤的。我已經使用了我目前使用的版本,主要是因爲無法遵循開發計劃,因爲所有不一致和解決方法以及事物的龐大規模(相比之下,我用於後端的Common Lisp看起來像是十九世紀的木製玩具,它大多隻是工作),但我也不願在中間項目中切換小版本,更不用說切換框架了。

+1

我發現奇怪的線是商店定義,我總是設置商店喜歡'商店:'business.MyStore'',你可以試試嗎? –

+0

,幷包含您店鋪控制器的店鋪 –

+0

我做了您建議的更改。將查看問題是否返回並在此處報告。爲什麼顯式實例化?我已經在兩個地方(一本關於ExtJs的書以及Web上的第三方教程)閱讀過,共享一家商店可能會對過濾其內容的控件產生不良影響,因爲過濾是由商店完成的。我想冒險實例化(可能,不確定)可能會更好地完成在initComponent而不是在聲明中,但事實上,組合使用Ext.create時,雖然,如我所說,不是非常可靠.. 。 – minya

回答

1

你應該設定儲存像一個字符串:

store: 'business.MyStore' 

,並添加店控制器存儲陣列。 我也有類似可編輯礦石類型的選項啓用。只要您離開編輯,只要您處於編輯模式,商店就會被過濾,商店不會再被過濾。