Как обновить mvc webgrid

Я использую WebGrid в своем приложении mvc.

<div class="grid-div" id="webgridid">
                @grid.GetHtml(
    tableStyle: "gridTable",
    headerStyle: "gridHead",
    footerStyle: "gridFooter",
    columns: new[]
    {
        grid.Column("name","Name", canSort: true, style: "name"),
        grid.Column("description","Description", canSort: true, style: "description"),
        grid.Column("duration","Duration", canSort: true, style: "duration"),
   })
</div>

Я могу редактировать выбранные значения строки с помощью формы. После редактирования этих значений они не отображаются в моем webGrid. Но это отражается в базе данных. Чтобы отразить это в webGrid, мне нужно обновить webGrid, загрузив данные из БД. Как я могу перезагрузить содержимое в webGrid из БД? Также после его перезагрузки этот pageNumber должен быть старым. Как это сделать?


person itzmebibin    schedule 09.03.2016    source источник
comment
Вы смотрели на использование частичного и вызов действия с помощью ajax jquery. Пример здесь   -  person Animus Miles-Militis    schedule 09.03.2016


Ответы (1)


Наконец-то я нашел решение своей проблемы. Я должен определить <div> с помощью ID и указать div id в атрибуте ajaxUpdateContainerId элемента управления WebGrid, который позволит WebGrid обновлять данные асинхронно с помощью Ajax.

<div id="ajaxgrid">
  @{
      var grid = new WebGrid(Model, rowsPerPage: 10, selectionFieldName: "SelectedRow", ajaxUpdateContainerId: "ajaxgrid");                   
   }
</div>

Затем вызовите GetHtml метод WebGrid, чтобы Razor Engine мог сгенерировать для него соответствующий HTML. После окончания тега <div>.

@grid.GetHtml(
    tableStyle: "gridTable",
    headerStyle: "gridHead",
    footerStyle: "gridFooter",
    columns: new[]
    {
        grid.Column("name","Name", canSort: true, style: "name"),
        grid.Column("description","Description", canSort: true, style: "description"),
        grid.Column("duration","Duration", canSort: true, style: "duration"),
   })

Затем в моем ajax призыве к обновлению я добавил location.reload(), чтобы обновить свой WebGrid.

$.ajax({
                url: '@Url.Action("User", "UserDetails")',
                type: "POST",
                dataType: "json",
                contentType: "application/json; charset=utf-8",
                data: formData,
                contentType: false,
                processData: false,
                success: function (result) {
                    if (result == "OK") {
                        location.reload();
                    }
                    else
                        alert(result);
                },
                error: function (result) {
                    alert('Error!');
                }
            });

Теперь он работает нормально для меня.

person itzmebibin    schedule 09.03.2016
comment
Спасибо за это! location.reload (); это все, что мне нужно, чтобы работать, что мне нужно! - person AxleWack; 01.06.2017
comment
@itzmebibin Я считаю, что использование частичного представления или $ ('# Grid'). append (...) в JQuery было бы более подходящим для того, чего вы ожидаете. Вместо того, чтобы обновлять всю страницу. - person Siddharth Dinesh; 06.04.2020