Asp.net mvc 4 如何使用ASP.NET MVC在剑道UI网格中实现N级嵌套层次结构

Asp.net mvc 4 如何使用ASP.NET MVC在剑道UI网格中实现N级嵌套层次结构,asp.net-mvc-4,kendo-ui,kendo-grid,kendo-asp.net-mvc,Asp.net Mvc 4,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,我正在尝试使用ASP.NETMVC在剑道UI网格中实现N级嵌套层次结构 我可以实现特定数量的嵌套网格,但如何使用asp.net MVC中的特定数据实现N级嵌套网格 @(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.EmployeeViewModel>() .Name("grid") .Columns(columns => { columns.Bound(e =>

我正在尝试使用ASP.NETMVC在剑道UI网格中实现N级嵌套层次结构 我可以实现特定数量的嵌套网格,但如何使用asp.net MVC中的特定数据实现N级嵌套网格

@(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.EmployeeViewModel>()
        .Name("grid")
        .Columns(columns =>
        {
            columns.Bound(e => e.FirstName).Width(110);
            columns.Bound(e => e.LastName).Width(110);
            columns.Bound(e => e.Country).Width(110);
            columns.Bound(e => e.City).Width(110);
            columns.Bound(e => e.Title);

        })               
        .Sortable()
        .Pageable()
        .Scrollable()
        .ClientDetailTemplateId("template")
        .HtmlAttributes(new { style = "height:430px;" })
        .DataSource(dataSource => dataSource
            .Ajax()
            .PageSize(6)
            .Read(read => read.Action("HierarchyBinding_Employees", "Grid"))            
        )        
        .Events(events => events.DataBound("dataBound"))
)

<script id="template" type="text/kendo-tmpl">
    @(Html.Kendo().Grid<Kendo.Mvc.Examples.Models.OrderViewModel>()
            .Name("grid_#=EmployeeID#")
            .Columns(columns =>
            {
                columns.Bound(o => o.OrderID).Width(70);
                columns.Bound(o => o.ShipCountry).Width(110);
                columns.Bound(o => o.ShipAddress);
                columns.Bound(o => o.ShipName).Width(200);
            })
            .DataSource(dataSource => dataSource
                .Ajax()
                .PageSize(5)
                .Read(read => read.Action("HierarchyBinding_Orders", "Grid", new { employeeID = "#=EmployeeID#" }))
            )
            .Pageable()
            .Sortable()
            .ToClientTemplate()
    )
</script>
<script>
    function dataBound() {
        this.expandRow(this.tbody.find("tr.k-master-row").first());
    }
</script>
@(Html.Kendo().Grid())
.名称(“网格”)
.列(列=>
{
columns.Bound(e=>e.FirstName).Width(110);
columns.Bound(e=>e.LastName).Width(110);
columns.Bound(e=>e.Country).Width(110);
columns.Bound(e=>e.City).Width(110);
columns.Bound(e=>e.Title);
})               
.Sortable()
.Pageable()
.Scrollable()
.ClientDetailTemplateId(“模板”)
.HtmlAttributes(新的{style=“height:430px;”})
.DataSource(DataSource=>DataSource
.Ajax()
.页面大小(6)
.Read(Read=>Read.Action(“HierarchyBinding_Employees”,“Grid”))
)        
.Events(Events=>Events.DataBound(“DataBound”))
)
@(Html.Kendo().Grid())
.Name(“grid##=EmployeeID#”)
.列(列=>
{
columns.Bound(o=>o.OrderID).Width(70);
columns.Bound(o=>o.ShipCountry).Width(110);
columns.Bound(o=>o.ShipAddress);
columns.Bound(o=>o.ShipName).Width(200);
})
.DataSource(DataSource=>DataSource
.Ajax()
.页面大小(5)
.Read(Read=>Read.Action(“HierarchyBinding_Orders”,“Grid”,new{employeeID=“#=employeeID#“}))
)
.Pageable()
.Sortable()
.ToClient模板()
)
函数数据绑定(){
this.expandRow(this.tbody.find(“tr.k-master-row”).first());
}
使用这段代码,我可以得到1个嵌套网格


请指导如何获取剑道嵌套网格的N级。谢谢

我认为这样做是不可能的,因为这类数据(树)是使用treeview插件或类似的东西显示的,这应该更清楚,这就是为什么他们有这种ui组件。

为每个嵌套网格创建部分视图。部分视图网格将每个都有一个ClientDetailTemplate。

您可以使用剑道UI网格实现N级层次结构

模板中应该有ClientDetailTemplateId。这是一个例子

<script id="clientTemplate" type="text/kendo-tmpl">
        @(Html.Kendo().Grid<TimeSheetManagement.Models.ClientView>()
                    .Name( "ClientGrid_#=Id#" )
                        .Columns( columns =>
            {
                columns.Bound( e => e.Name ).Title("Client Name");
                columns.Bound( e => e.Address ).Title( "Client Address" );
                columns.Bound( e => e.City ).Title( "Client City" );
                columns.Bound( e => e.State );
                columns.Bound( e => e.ZipCode );
                columns.Bound( e => e.CreatedDate );
                columns.Bound( e => e.CreatedBy );
                columns.Bound( e => e.UpdatedDate );
                columns.Bound( e => e.UpdatedBy );
                //columns.Bound( "" ).ClientTemplate( @Html.ActionLink( "Edit" , "Create" , new { clientId = "#=Id#" } , new { title = "Edit Client" } ).ToHtmlString() );
            } )
                .AutoBind( true )
                .DataSource( dataSource => dataSource
                    .Ajax()
                    .Read( read => read.Action( "GetClientsByProjectId" , "Client" , new { sProjectId = "#=Id#" } ) )
                )
                .ClientDetailTemplateId( "employeeTemplate" )
                .ToClientTemplate()
        )
</script>

@(Html.Kendo().Grid())
.Name(“ClientGrid#=Id#”)
.列(列=>
{
columns.Bound(e=>e.Name).Title(“客户名称”);
columns.Bound(e=>e.Address).Title(“客户地址”);
columns.Bound(e=>e.City).Title(“客户城市”);
columns.Bound(e=>e.State);
columns.Bound(e=>e.ZipCode);
columns.Bound(e=>e.CreatedDate);
columns.Bound(e=>e.CreatedBy);
columns.Bound(e=>e.updateDate);
columns.Bound(e=>e.UpdatedBy);
//columns.Bound(“”).ClientTemplate(@Html.ActionLink(“编辑”,“创建”,新建{clientId=“#=Id#”},新建{title=“编辑客户端”}).ToHtmlString());
} )
.AutoBind(真)
.DataSource(DataSource=>DataSource
.Ajax()
.Read(Read=>Read.Action(“GetClientsByProjectd”,“Client”,new{sProjectId=“#=Id#“}))
)
.ClientDetailTemplateId(“employeeTemplate”)
.ToClient模板()
)
下面是子模板的实现

<script id="employeeTemplate" type="text/kendo-tmpl">
        @(Html.Kendo().Grid<TimeSheetManagement.Models.EmployeeView>()
                    .Name( "EmployeeGrid_#=Id#" )
                .Columns( columns =>
                {
                    columns.Bound( e => e.EmployeeName );
                    columns.Bound( e => e.Address );
                    columns.Bound( e => e.City );
                    columns.Bound( e => e.State );
                    columns.Bound( e => e.ZipCode );
                    columns.Bound( e => e.PhoneNumber );
                    columns.Bound( e => e.Email );
                    columns.Bound( e => e.Designation );
                    columns.Bound( e => e.CreatedDate );
                    columns.Bound( e => e.CreatedBy );
                } )
                .AutoBind( true )
                .DataSource( dataSource => dataSource
                    .Ajax()
                    .Read( read => read.Action( "GetEmployeesByClientId" , "Employee" , new { sClientId = "#=Id#" } ) )
                )
                .ToClientTemplate()
        )
    </script>

@(Html.Kendo().Grid())
.Name(“EmployeeGrid_35;=Id#”)
.列(列=>
{
columns.Bound(e=>e.EmployeeName);
columns.Bound(e=>e.Address);
columns.Bound(e=>e.City);
columns.Bound(e=>e.State);
columns.Bound(e=>e.ZipCode);
columns.Bound(e=>e.PhoneNumber);
columns.Bound(e=>e.Email);
列.绑定(e=>e.名称);
columns.Bound(e=>e.CreatedDate);
columns.Bound(e=>e.CreatedBy);
} )
.AutoBind(真)
.DataSource(DataSource=>DataSource
.Ajax()
.Read(Read=>Read.Action(“GetEmployeesByClientId”,“Employee”,new{sClientId=“#=Id#”}))
)
.ToClient模板()
)
这是输出。如果你还有任何问题,请告诉我。我希望这对你有帮助。

我甚至不能使用剑道UI网格执行第三或第四级层次结构吗?是的,您应该能够执行此操作。您可以指导如何执行吗?谢谢您充满希望的回答。你能给我一个样品代码吗?你有样品吗?