我正在寻找在Kendo网格中的N级嵌套子行为。到目前为止,我一直在实现3-4级,但是这些网格必须在代码中进行硬编码。
请指导,如果有人做了动态的方式,或动态生成网格作为子网格,如果可能的话,任何替代实现同样的。
希望你们能帮忙。
发布于 2014-06-12 19:09:51
我已经编辑了下面的详细模板演示:http://demos.telerik.com/kendo-ui/grid/detailtemplate
小提琴:http://jsfiddle.net/j5b64/1/
detailRow.find(".orders").kendoGrid({
detailTemplate: kendo.template($("#template").html()),
detailInit: detailInit,
dataSource: {...
在展开详细信息行之前不会初始化它们(它们在DOM中不存在)。因此,在展开包含新网格的行之前,生成新网格的调用不可能发生。
幸运的是,Kendo提供了一个“detailInit”事件,您可以插入该事件并初始化您的子网格。
.net绑定更新:首先在您的页面上需要定义模板。在模板中使用类而不是ID是很重要的。您的模板将被多次使用,并且您希望保持ID的唯一性。
<script type="text/x-kendo-template" id="template">
<div class="orders"></div>
</script>
然后,需要引用该模板作为网格的详细行模板。在这里,我们只需要引用上面模板的id。(您可以使用.DetailTemplate()来按行定义模板,但是在以后的子网格中使用它就更困难了,因为您必须从服务器生成的JS中解析它)
@(Html.Kendo().Grid<mySite.ViewModels.GridViewModel>()
.Name("Grid")
.ClientDetailTemplateId("template")
.Columns(columns => .....
现在JS来了。我们需要做两件事。一个是创建一个可重用的初始化函数,另一个是注册这个函数以便在初始化时运行。
在我们的函数中,我们应该定义一个新的网格。同样,这是在JS中完成的。理论上,您可以定义一个示例网格,并查找构建了JQuery的服务器,这将是它的兄弟级,并将其重用到您的子网格中,但此时您最好使用JQuery来定义网格。
function detailInit(e) {
var detailRow = e.detailRow;
detailRow.find(".orders").kendoGrid({
detailTemplate: kendo.template($("#template").html()),
detailInit: detailInit,
....
现在我们需要连接我们的第一个网格来使用我们的启动功能。
$(document).ready({
$("#Grid").data("kendoGrid").bind("detailInit", detailInit);
});
我希望这能帮到你。
https://stackoverflow.com/questions/24190545
复制相似问题