1

У меня есть эта кендо сетки на 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"); 

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

EDIT:

Я создал эту функцию мотивационные ниже

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 
     }); 

Works немного лучше, если я использую стрелки с клавиатуры, он не идет ниже 0, но если я нажму на стрелки на правой стороне ввода, он по-прежнему идет на отрицательные номера

ответ

2

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

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, 
+0

где я могу добавить это? – Ric

+0

в инициализации сетки см. Обновленный ответ – calinaadi

+0

моя сетка не распознает фильтрMenuInit, обратите внимание, что моя сетка находится в asp.net mvc razor – Ric

Смежные вопросы