无法将子网格绑定到kendo Hierarchy UI网格中的第二行

时间:2013-08-06 09:59:02

标签: asp.net-mvc asp.net-mvc-4 kendo-ui kendo-grid kendo-asp.net-mvc

我有父网格和子网格,我正在使用kendo UI Grid(层次结构网格格式) 将子网格数据绑定到父网格中的相应行,以便我能够仅显示第一行的子网格,而不能显示另一行的相同详细信息......

这是我对该网格的看法......

@model IEnumerable<KendoSampleMVCApp.Models.EmployeesDetailsModel>
@{
    ViewBag.Title = "Index";
}
<h2>Index</h2>
@using (Html.BeginForm())
{ 
   @(Html.Kendo().Grid<KendoSampleMVCApp.Models.EmployeesDetailsModel>()
        .Name("ParentGrids")
        .Columns(columns =>
        {
            columns.Bound(e => e.EmployeeID).Width(100);
            columns.Bound(e => e.EmployeeFirstName).Width(100);
            columns.Bound(e => e.EmployeeSecondName).Width(100);
            columns.Bound(e => e.EmployeeCity).Width(100);         

        })               
        .Sortable()
        .Pageable()
        .Scrollable()
        .ClientDetailTemplateId("template")
        .HtmlAttributes(new { style = "height:430px;" })
        .DataSource(dataSource => dataSource
            .Ajax()
            .PageSize(5)
            .Read(read => read.Action("HierarchyBinding_Employees", "HierarchyGridDisplay"))            
        )               
)
    <script id="template" type="text/kendo-tmpl">
    @(Html.Kendo().Grid<KendoSampleMVCApp.Models.ShipDescriptionModel>()
            .Name("ChildGrids")
            .Columns(columns =>
            {
                columns.Bound(o => o.ShipAddress).Width(70);
                columns.Bound(o => o.ShipCountry).Width(70);
                columns.Bound(o => o.ShipName).Width(70);
            })
            .DataSource(dataSource => dataSource
                .Ajax()
                .PageSize(6)
                .Read(read => read.Action("HierarchyBinding_Orders", "HierarchyGridDisplay"))
            )
            .Pageable()
            .Sortable()
            .ToClientTemplate()
    )
    </script>
<script>
    function dataBound() {
        this.expandRow(this.tbody.find("tr.k-master-row").first());
    }
</script>
}

这是我的模特

public class EmployeesDetailsModel
{
    public string EmployeeID { get; set; }
    public string EmployeeFirstName { get; set; }
    public string EmployeeSecondName { get; set; }
    public string EmployeeCity { get; set; }        
}
public class ShipDescriptionModel
{
    public string ShipCountry { get; set; }
    public string ShipAddress { get; set; }
    public string ShipName { get; set; }       
}
public class EmployeeShipModel
{
    public EmployeesDetailsModel employeesshipments { get; set; }
    public ShipDescriptionModel shipinfo { get; set; }   
}

您是否会建议任何想法和任何更改都需要在view中完成,以便将子网格数据显示到另一行...非常感谢

请查看下面附带的图片

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为这是因为你有一个网格的静态ID。你应该尝试给它一个动态的,这样就可以创建不同的子网格。这就是为什么它只适用于第一条记录,因为您没有网格名称的变体。 试着这样做:

class PostSerializer(serializers.ModelSerializer):
    related_comments = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
    class Meta:
        model = Post
        fields = ('id', 'author', 'title', 'text', 'point', 'related_comments')

正在发生的事情是来自父网格的EmployeeId被拉下来,并被用于网格的命名约定。通过这种方式,您可以拥有与您喜欢的一样多的子网格。