Как привязать сетку кендо к событию нажатия кнопки

0

Мне нужно привязать сетку кендо нажатием кнопки и получить пример в другом вопросе SO: Kendo Grid - привязать данные после поиска, но это не работает для меня. Мое действие контроллера возвращает объект json, но этот объект не отображается в моей сетке.

Ниже приведен один и тот же код, представленный в другом вопросе:

@(Html.Kendo().Grid<Project.Data.Entity.SearchResult>()
   .Name("ClaimantSearch") 
   .DataSource(dataSource => dataSource 
        .Ajax() 
    //.Read(read => read.Action("Search", "Claimant")) ) 
   .Columns(columns => 
   { 
    columns.Bound(x => x.Name); 
    columns.Bound(x => x.Authorized); 
    columns.Bound(x => x.CompanyName); 
    columns.Bound(x => x.Address); 
    }) 
   .Resizable(resizing => resizing.Columns(true))
)

Javascript:

$('#btnSearch').click(function () {
    alert('a');
    $.ajax({
        data: '@Url.Action("Search", "Claimant")',
        type: 'POST',
        contentType: "application/json;charset=utf-8",
        data: "",
        dataType: "json",
        success: function (data) {
            alert(data);
            var grid = $('#Claimant').getKendoGrid();
            grid.dataSource.data(result);
            grid.refresh();
        }
    });
    return false;
});
  • 0
    Вы проверяли консоль на наличие ошибок?
  • 0
    Ошибки не выбрасываются
Показать ещё 7 комментариев
Теги:
asp.net-mvc
kendo-grid

3 ответа

0

Чтобы передать параметр из представления в контроллер,.Data("дополнительная информация") добавляется в свойство.Read сетки.DataSource

Решение ASP.NET MVC

@(Html.Kendo().Grid<Your_Model>()
    .Name("grd_yourGrid")
    .AutoBind(false)
    .Columns(columns =>
    {
        columns.Bound(c => c.modelAttribute).Width(300);
    })
    .HtmlAttributes(new { style = "height: 500px;" })
    .Scrollable()
    .Pageable(pageable => pageable
        .Refresh(true)
        .PageSizes((new int[] { 5, 10, 20, 50, 100, 200 }).ToList())
        .ButtonCount(15))
    .DataSource(dataSource => dataSource
           .Ajax().ServerOperation(false)
           .Read(read => read.Action("MyActionName", "MyController").Data("additionalInfo"))
        .PageSize(100)
    ))

Javascript:

 <script>

        $('#btn_yourButtonName').click(function () {

            $("#grd_yourGrid").data("kendoGrid").dataSource.read();

            return false; // WITHOUT THIS GRID WILL NOT BE FILLED
        });


        function additionalInfo() {
            return {
                startRange: $("#inputValueOne").data("kendoNumericTextBox").value(),
                endRange: $("#inputValueTwo").data("kendoNumericTextBox").value()
            }
        }
</script>

Контроллер (MyController):

[HttpPost]
public ActionResult MyActionName([DataSourceRequest]DataSourceRequest request, string startRange, string endRange){}
0

Вы можете добавить .AutoBind(false)

@(Html.Kendo().Grid<Project.Data.Entity.SearchResult>()
  .Name("ClaimantSearch") 
  .AutoBind(false)
  .DataSource(dataSource => dataSource 
  .Ajax() 
  .Read(read => read.Action("Search", "Claimant")) ) 
  .Columns(columns => 
{ 
 columns.Bound(x => x.Name); 
 columns.Bound(x => x.Authorized); 
 columns.Bound(x => x.CompanyName); 
 columns.Bound(x => x.Address); 
}) 
.Resizable(resizing => resizing.Columns(true))
)

<input type="button" value="Generate" id="btnGenerate" />

Вы можете добавить $ ("# ClaimantSearch"). Data ("kendoGrid"). DataSource.read(); в событии нажатия кнопки JQuery

<script>
$('#btnGenerate').click(function () {
    $("#ClaimantSearch").data("kendoGrid").dataSource.read();
});
</script>
0

Замените обратный вызов успеха следующим образом:

success: function (result) {
    alert(result);
    var grid = $('#Claimant').getKendoGrid();
    grid.dataSource.data(result);
    grid.refresh();
}

Проблема заключалась в том, что вы переименовали аргумент функции в data но вы все еще пытались связать result. Измените его на result и он должен работать.

Кроме того, я заметил, что у вас есть два атрибута data в вашем вызове ajax, возможно, вы захотите удалить пустой.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню