2017-05-19 48 views
0

爲了更好地概述和使用可用的屏幕空間,我希望兩個網格相鄰,但只有一個帶有按鈕的工具欄。這兩個網格綁定到不同的ChainedStore,但鏈接商店的底層源存儲是相同的。 ChainedStore有過濾器來創建底層存儲區中記錄的分區 - 一半在左邊,另一半在右邊。SelectionModel:只允許兩個網格中的一個選擇

單擊工具欄中的按鈕應該在這些網格中的任何一個網格上對所選記錄執行操作。

有沒有辦法告訴selectionModels我只希望選擇一個記錄,在右邊或左邊的網格中,但不是每個中都有一個?

您可以嘗試在這裏:https://fiddle.sencha.com/#view/editor&fiddle/1vs4

+1

沒有,沒有。您需要根據情況使用'beforeselect'事件否決選擇。 –

+0

謝謝您確認我沒有忽視文檔中的任何內容,@EvanTrimboli但是,我不想否決用戶的任何選擇。我現在在另一個網格的selectionModel上調用setSelected([])。但是,爲了讓網格反映選擇的變化,我總是必須調用getView()。refresh()。這是一個錯誤? https://fiddle.sencha.com/#view/editor&fiddle/1vs5 – Alexander

+2

使用'deselectAll();'。不知道你爲什麼要調用'.setSelected({});',特別是因爲'selected'是私人的。 –

回答

2

ExtJS的不支持相同的選擇模型兩種不同grid.You必須通過手動代碼處理它。

您可以在每個網格上寫入select事件偵聽器,並且可以在該事件中取消選擇另一個網格的記錄。

grid1

listeners :{ 
       select : function(sel, record, index, eOpts){ 
         sel.view.up('panel[name=main]').down('grid[name=grid2]').getSelectionModel().deselectAll(); 
       } 
      } 

grid2

listeners :{ 
       select : function(sel, record, index, eOpts){ 
        sel.view.up('panel[name=main]').down('grid[name=grid1]').getSelectionModel().deselectAll(); 
       } 
      } 

請參閱fiddle

相關問題