2012-08-22 88 views
3

我正在使用inline編輯enhancedgrid單元並具有NumberSpinner元素。編輯內聯時,此numberpinner的約束不起作用。所需的屬性工作正常。 我的代碼:NumberSpinner限制在DataGrid中不起作用

{field: 'msorder', width: '10%', name: 'Milestone Order',editable: true, type: dojox.grid.cells._Widget, widgetClass: dijit.form.NumberSpinner, widgetProps: {required:true,smallDelta:1, editorParams:{constraints:{ min:-1000, max:1000, places:0 }} }} 

我也曾嘗試:

{field: 'msorder', width: '10%', name: 'Milestone Order',editable: true, type: dojox.grid.cells._Widget, widgetClass: dijit.form.NumberSpinner, widgetProps: {required:true,smallDelta:1, constraints:{ min:-1000, max:1000, places:0 } }} 
+0

你在什麼情況下使用該字段聲明?也許有一個jsfiddle? – mschr

回答

2

我不知道你用的是什麼版本的Dojo,但在1.6已知的bug是約束電網部件被忽略。但是,我解決這個問題做了一點覆蓋標準NumberSpinner

dojo.require("dijit.form.NumberSpinner"); 

dojo.addOnLoad(function() { 

    dojo.declare("mySpinner", [ dijit.form.NumberSpinner], { 

      validator: function(v, c){ 

       var MIN= -1000; 
       var MAX = 1000; 

       c.min= MIN; 
       c.max = MAX ; 
       return ((v < MAX) && (v > MIN)); 
      }, 

    }); 

    var dateBox = new mySpinner({}).placeAt('foo'); 
    dateBox.set("value", 1000); 

}); 

(現在,在您的網格結構,你應該使用,當然mySpinner,它應該做的伎倆)。

演示:http://jsfiddle.net/tvUaK/135/

+1

你絕對是解決問題的工廠。謝謝你的時間 – Sandeep

0

我用另一種方式來解決這個問題。我將單元格的類型定義爲Widget,然後在get方法上創建窗口小部件。

{ 
field: 'msorder', 
width: '10%', 
name: 'Milestone Order', 
editable: true, 
type: dojox.grid.cells._Widget, 
get: function(rowIndex, item) { 
    var store = this.grid.store, 
     value = store.getValue(item, 'value'); 

    this.widget = new dijit.form.NumberSpinner({ value:0, 
    constraints:{ min:-1000, max:1000 } 
    }); 

    return value; 
} 
} 

有了這個實現我能對網格中的每個單元格設置不同的約束。

3

有一個更簡單的解決方案,球員:

約束:{分鐘:0,最大值:24}

{field: "hours", name: "Stunden",type: dojox.grid.cells._Widget, widgetClass: dijit.form.NumberSpinner, constraint:{min:0,max:24}, widgetProps: {smallDelta:0.25, intermediateChanges:true,}},

它必須是widgetProps的外部,並且在單數..