3

我正在使用增强网格单元的内联编辑并有一个 NumberSpinner 元素。内联编辑时,此 numberspinner 的约束不起作用。所需的属性可以正常工作。我的代码:

{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 } }}
4

3 回答 3

3

有一个更简单的解决方案,伙计们:

约束:{min:0,max: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 之外并且以单数形式...

于 2012-10-24T10:25:38.200 回答
2

我不知道Dojo您使用的是哪个版本,但 1.6 中存在一个已知错误,即网格小部件中忽略了约束。但是,我通过一些覆盖标准来解决这个问题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/

于 2012-09-06T12:18:42.897 回答
0

我用另一种方法来解决这个问题。我将单元格的类型定义为小部件,然后在 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;
 }
}

通过这个实现,我能够为网格上的每个单元格设置不同的约束。

于 2012-10-09T21:32:34.153 回答