2012-08-22 30 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的外部,并且在单数..