在 MVC 中重新绑定剑道网格

Posted

技术标签:

【中文标题】在 MVC 中重新绑定剑道网格【英文标题】:Rebind Kendo Grid in MVC 【发布时间】:2012-07-12 05:34:46 【问题描述】:

在使用下面的 javascript 过滤数据后,我试图在单击按钮时重新绑定 Kendo Grid,但它不起作用。我该怎么办?

我使用 Kendo.Mvc.Dll 的 HTML 代码:

html.Kendo().Grid<EquityStreet.Data.ESData.Proc_GetESManagersListAndFilterResult>().Name("GridESManager").BindTo(Model.ESManagersList).Columns(columns =>
 
     columns.Bound(m => m.pkESManagerId).Template(@<input type="checkbox" id="@item.pkESManagerId" />).Title("").Width("2%");
     columns.Bound(m => m.pkESManagerId).Template(@<text> @item.FirstName @item.LastName</text>).Title("Name");
     columns.Bound(m => m.CompanyName).Title("Company");
     columns.Bound(m => m.MobileNo).Title("Phone Number");
     columns.Bound(m => m.ESManagerStatus).Template(@<text>@(item.ESManagerStatus == 1 ? "Active" : "Inactive")</text>).Title("Status");
     columns.Bound(m => m.pkESManagerId).Template(@<text> <a href="../Utilities/NewESManager?EId=@item.pkESManagerId" class="access_btn">
     </a><a href="../Utilities/NewESManager?EId=@item.pkESManagerId" class="notes_btn"></a><a href="../Utilities/NewESManager?EId=@item.pkESManagerId" class="edit_btn">
     </a><a href="../Utilities/NewESManager?EId=@item.pkESManagerId" class="delete_btn"></a>
            </text>).Title("Actions");
 ).ToolBar(tb =>
 
     tb.Template("<div class='GridSearchHeader'><div style='float:left'><input type='button' value='Reset Pwd'><input type='button' value='Delete'></div><label>Filter: </label><input type='search' style='width: 230px' id='txtSearch'><select id='Status'><option value=-1>Select</option><option value=1>Active</option><option value=0>Inactive</option></select><input type='button' onclick='FilterList()' value='Go'><input type='button' value='Reset'></div>");
 ).Pageable()
                              )

JavaScript:

 $.post('@Url.Action("FilterESManagerList", "../../Utilities")',  Keyword: Search, UserStatus: status , function (result) 
            var grid = $("#GridESManager").data("kendoGrid");
            grid.dataSource.data(result);
            grid.refresh();
            alert(grid);
        );

【问题讨论】:

如果对您有帮助,请查看上面的链接。[Kendo UI DataSource Refresh][1] [1]:***.com/questions/18459848/… 【参考方案1】:

调用grid.dataSource.data(result) 应该重新绑定网格,除非result 不是预期的格式。

【讨论】:

结果格式正确。当我使用萤火虫检查它时,它说 grid.dataSource.data(result)- 数据不是一个函数 grid.dataSource.read()- 读取不是一个函数我已经尝试了很多次但没有工作并检查了所有内容。当我尝试 grid.dataSource=result;它assined,但没有重新绑定网格。 grid.dataSource.fetch()- fetch 不是函数 嗨 Atanas Korchev,您能提供您的电子邮件,以便我可以向您发送示例项目吗?谢谢 我发现了错误。错误是我没有导入 现在过滤和重新绑定工作正常,但是现在出现了另一个问题模板不起作用。你有什么替代方案吗?它应该像 Telerik Grid 一样工作。谢谢【参考方案2】:

看来在使用ajax-binding的时候,调用grid.dataSource.fetch()会触发datasource中定义的read方法并自动重新绑定。

【讨论】:

【参考方案3】:

试试这个:

$("#gridName").data("kendoGrid").dataSource.sync();

【讨论】:

以上是关于在 MVC 中重新绑定剑道网格的主要内容,如果未能解决你的问题,请参考以下文章

从另一个视图重新绑定剑道网格到以前的搜索条件的正确方法是啥(后退按钮不起作用)

更改剑道网格角度的模式

如何在 asp.net MVC 4 Razor 中绑定剑道网格

如何用新数据刷新剑道网格

根据下拉更改绑定/重新绑定 Kendo Grid

剑道网格中绑定海量数据的逻辑是啥