如何刷新mvc webgrid

How to refresh mvc webgrid

我在我的 mvc 应用程序中使用 WebGrid。

<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 应该是旧的。如何做到这一点?

终于找到了解决问题的方法。我必须用 ID 定义一个 <div>,并在 WebGrid 控件的 ajaxUpdateContainerId 属性中引用 divid,这将允许 WebGrid 使用 Ajax.

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

然后,调用WebGridGetHtml方法,让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!');
                }
            });

现在它对我来说工作正常。