如何在Kendo Grid Inline Editing中限制1到12之间的数字输入

时间:2013-10-22 10:13:05

标签: kendo-ui kendo-grid kendo-asp.net-mvc

我有一个剑道网格,一列应该是0到12之间的数字。除了HourTimeHours之外,其他任何工作都正常。我不能把min值小于0,但我可以把12以上。请帮忙。

schema: {
            model: {
                id: "ID",
                fields: {
                    ID: { editable: false },
                    TName: { editable: false },
                    HourTimeHours: { editable: true, type: "number", validation: { required: true, min: 0, max: 12 } },
                    Comment: { editable: true, nullable: true },
                    Reason: { editable: false, nullable: true },
                    ChargeRateText: { defaultValue: { CategoryID: "No Charge", CategoryName: "No Charge" } },
                }
            },

3 个答案:

答案 0 :(得分:3)

创建网格时,您必须为该字段指定编辑器。

$("#grid").kendoGrid({
    dataSource: dataSource,
    columns: [
        { field: "HourTimeHours", title: "Hours", editor: hoursDropDownEditor }],
    editable: true
});

然后,如果您想要类似于剑道数字文本框的内容,您的功能将如下所示:

function hoursDropDownEditor(container, options) {
    $('<input/>')
        .appendTo(container)
        .kendoNumericTextBox({
            min: 1,
            max: 12,
            step: 1
    });
}

更新:您还可以使用模板,这样可以让用户清楚地知道该字段是可编辑的。

http://jsfiddle.net/amomsen/vcpWD/1/

答案 1 :(得分:0)

对于Kendo UI MVC,您可以限制Kendo Grid内联编辑的长度

    $("body").delegate("#percentage", "keyup", function () { 
        $("#percentage").attr('maxlength', '5');
    });

其中#percentage是要编辑的单元格的id

columns.Bound(p => p.percentage);

所有网格:

@(Html.Kendo().Grid<Internal.Models.ExchangeRateData>()
    .Name("ExchangeGrid") 
    .Columns(columns =>
    { 
        columns.Bound(p => p.targetCurrency);
        columns.Bound(p => p.percentage);
        columns.Command(commands => { commands.Edit(); }); 
    }) 
    .Editable(edit =>
    {
        edit.Mode(GridEditMode.InLine); 
    })
    .DataSource(dataSource => dataSource
        .Ajax()
        .Batch(true)
        .ServerOperation(false)
        .Model(model =>
        {
            model.Id(item => item.targetCurrency);  
        }) 
        .Events(events =>
        {
            events.Sync("onSync");
        })
        .Read(read => read.Action("ExchangeRate_Read", "ExchangeRatesFortius").Data("ReadRequestData"))
        .Update(c => c.Action("Currencies_Update", "ExchangeRatesFortius")) 
    )
)

答案 2 :(得分:0)

对于kendo mvc,我可以使用这样的模板进行限制:

 columns.Bound(m => m.Inches)
                .ClientTemplate("<input type=\"number\" value=#= Inches # min=\"0\" max=\"11\" step=\"1\" ></input>")
                .Width(60);