Предотвратить отрицательные значения в фильтре сетки кендо

У меня есть эта сетка кендо в проекте asp.net mvc

<div class="actualGrid" id="actualGrid">
    @(Html.Kendo().Grid<AVNO_KPMG.Models.Bench>()    //Bench Grid
            .Name("grid")

        .Columns(columns =>
        {
            columns.Bound(p => p.name).Title("Bench").Filterable(ftb => ftb.Cell(cell => cell.Operator("startswith"))).Width(100);
            columns.Bound(p => p.freeSeats).Title("Free Seats").Width(200).Filterable(ftb => ftb.Cell(cell => cell.Operator("gte"))).HtmlAttributes(new { @class = "FreeSeats" })
                .ClientTemplate("<div class='barthingy'><div class='bars_text'><div class='seatsText'><span class=\"bookfull\"></span> <b>#=bookedSeats#</b> USED SEATS</div><div class='seatsText'><span class=\"bookNotfull\"></span> <b>#=freeSeats#</b> TOTAL OF SEATS</div></div><div id='bigbar'><div  class='bigbar'  style='width:100%; float:left; background-color:rgb(142, 188, 0);'><div  ' style='float:right; width:#=bookedSeats *100 / seatsCount#%; background-color:rgb(255, 99, 71); height:16px '  class='b_#=name#' id='temp-log'></div></div></div></div>");

        })
        .Pageable()
        .Sortable()
        .Scrollable(scrolling => scrolling.Enabled(false))
                .Filterable(ftb => ftb.Mode(GridFilterMode.Row))
                .Events(events => events.DataBound("onDataBound").FilterMenuInit("filterInit"))
        .DataSource(dataSource => dataSource
        .Ajax()
        .PageSize(10)
        .Events(events => events.Error("error_handler"))
        .Model(model => model.Id(p => p.id))
                        .Read(read => read.Action("GetBenches", "Deskcheckin"))
                )
        )
</div>

Я хотел бы знать, есть ли способ запретить фильтрам принимать отрицательные значения (даже если мы нажмем стрелку вниз, когда значение равно 0). Я попытался добавить это на входы сетки

$(".actualGrid :input").attr("onkeypress", "return event.charCode >= 48 && event.charCode <= 57");

Но это только мешает пользователю вводить отрицательные значения, он все еще может использовать стрелки.

ИЗМЕНИТЬ:

Я создал эту функцию, как предложено ниже

function filterInit(e) {
        console.log("FILTER INIT!");
        if (e.field == "Free Seats") {
            //depends of how many inputs you have per filter
            $(e.container.find("input:eq(1)")).kendoNumericTextBox({
                min: 0
            });                        
        }
    }

Но все равно не работает :\

Я пытался сделать это с помощью jQuery

$(".actualGrid :input:eq(4)").kendoNumericTextBox({
            min: 0
        });

Работает немного лучше, если я использую стрелки на клавиатуре, он не опускается ниже 0, но если я нажимаю стрелки справа от ввода, он все равно переходит к отрицательным числам.


person Ric    schedule 17.11.2015    source источник


Ответы (1)


Вы можете использовать filterMenuInit.

  heigth:...,
  filterable: true,
  filterMenuInit: function (e) {
                    if (e.field == "YourField") {
  //depends of how many inputs you have per filter
                       $(e.container.find("input:eq(1)")).kendoNumericTextBox({
                            min: 0
                        });                        
                    }
    },
   sortable: true,
person calinaadi    schedule 17.11.2015
comment
моя сетка не распознает filterMenuInit, обратите внимание, что моя сетка находится в бритве asp.net mvc - person Ric; 18.11.2015
comment
.Events(events => events.FilterMenuInit(filterInit)) где filterInit — это функция, определенная в filterMenuInit: function (e) { - person calinaadi; 18.11.2015
comment
Я обновил свой вопрос с вашим предложением, у меня все еще есть некоторые проблемы, функция, похоже, не вызывается - person Ric; 18.11.2015