2015-11-24 27 views
0

更多或更少的配置是這樣的:如何根據Sencha ExtJS v6中記錄的屬性禁用網格的窗口小部件中的小部件?

{ 
      xtype: 'widgetcolumn', 
      //text: "", //localize 

      dataIndex: "carStatusButton", 

      //disable action for the column 
      sortable: false, 
      filter: false, 
      menuDisabled: true, 

      widget: { 
       xtype: 'changeavailbutton', 

       //reference: "gridCarStatusButton", we cannot use reference because we get a duplicate reference warning 

       //text is being automatically generated from dataIndex of widgetcolumn 

       /* 
       //didn't work! 
       defaultBindProperty: "curCarStatus", //default is text 

       curCarStatus: "aaaaaaaa", 

       setCurCarStatus: function (value) { 
        this.curCarStatus = value; 
       },*/ 

       /* 
       getCurCarStatus: function() { 
       return "aaaaaa" 
       }, 
       setCurCarStatus: function (value) { 
       },*/ 

       /*text: (function() { 
       return this.enableToggle; 
       })(), 

       bind: { 

       },*/ 
      }, 
     } 
  • 我們已經使用updater(cell, value, record, view)考慮,但是它沒有得到最初叫
  • 我們已經使用renderer(value, metadata, record)考慮,但我們只能影響價值,它不會給我們與小部件的任何幫助
  • 我們認爲在widget這樣使用自定義defaultBindProperty

       defaultBindProperty: "curCarStatus", //default is text 
    
          curCarStatus: "", 
    
          setCurCarStatus: function (value) { 
           this.curCarStatus = value; 
          } 
    

上述內容有助於避免在模型中創建額外的字段。換句話說,最初我們在模型中有一個場,作爲一個瞬態場來獲得widgetcolumndataIndex內的計算值,但沒有給我們想要實現的東西帶來任何幫助。

事實是(來自文檔)widgetcolumndataIndex綁定到widgetdefaultBindProperty。一個問題是,我們沒有意識到它的關鍵價值在後臺發生。它看起來像,如果它是一個配置:

bind: { 
    text: "{unknownProperty}" 
} 

如果我們知道物業是怎麼被調用它可能會有所幫助使用它的各種性能,因爲在我們的情況我們需要綁定多個屬性小工具

實際上,我們希望通過isDisabled提供了類似的功能,提供了一個ActionColumn有它在WidgetColumn

回答

2

在widgetcolumn本身:

onWidgetAttach: function (column, widget) { 
     if (widget.getWidgetRecord().get('property')) { 
      widget.setDisabled(false) 
     } else { 
      widget.setDisabled(true) 
     } 
    } 

和電網可與grid.getView().refresh()進行更新,以反映任何變化

+0

你的想法不壞,但他們沒有工作動態,他們似乎只爲工作初始渲染。最動態的情況是,當數據改變時(在飛行中)讓小部件列更改狀態 –

+0

實際上,如果調用'grid.getView()。refresh()',第二個(onWidgetAttach)將動態工作。所以,如果你可以編輯你的答案...謝謝:) –

+0

太棒了,很高興我可以幫助! – Jaimee

相關問題