1

我有一个带有 Kendo ListView 的 Kendo Grid 作为其客户端详细信息模板。这是网格:

@(Html.Kendo().Grid<ITS.BusinessModel.TaskManager.TaskItem>()
        .Name("grdPackage" + Model + "sTasks")
        .Columns(columns =>
        {
            columns.Bound(taskModel => taskModel.WorkflowInstanceId);
            columns.Bound(taskModel => taskModel.WorkflowInstanceName);
            columns.Bound(taskModel => taskModel.Name).ClientTemplate("<a onclick='openTasksForm(#= ID#)' > #= Name # </a>");
        }
        .ClientDetailTemplateId("TaskSumeriesListViewTemplate")
        .AutoBind(false)
        .DataSource(dataSource => dataSource
            .Ajax()
            .PageSize(20)
            .ServerOperation(true)
            .Model(model => model.Id(Task => Task.ID))
            .Read(read => read.Action("TaskItemsList_Read", "Task", new { packageGroupID = Model, packageType = (Model == -2) ? 0 : (Model == -1) ? 1 : 2 }))
        )
)

这是客户端模板:

<script type="text/x-kendo-tmpl" id="TaskSumeriesListViewTemplate">

    @(Html.Kendo().ListView<ITS.BusinessModel.TaskManager.WorkflowInstanceSummaryItem>("#=TaskSumaries#")
        .Name("listViewPackage")
        .TagName("div")
        .ClientTemplateId("SummeriesTemplate")
        .ToClientTemplate()
        )
</script>

这是 ListView 的模板:

<script type="text/x-kendo-tmpl" id="SummeriesTemplate">
    <div>
        #=ColumnName# : #=ColumnValue#
    </div>
</script>

Grid 读取的每个 TaskItem 都有一个 TaskSumariesList,它是一个 List。我想在 ListView 的网格客户端详细信息中使用此列表。我怎样才能做到这一点?

4

2 回答 2

3

在您对网格的事件调用中,使用如下内容:

.Events(e => e.DetailInit("detailInit")

然后,您可以执行以下操作:

function detailInit(e) {
    var list= $("#listViewPackage").data("kendoGrid");      

    list.dataSource.data(e.data.TaskSumariesList) 
}

将会发生的是,列表在展开时将填充适当的数据。

您可能需要为您的列表名称执行以下操作:

.Name("listViewPackage#=WorkflowInstanceId#")

这样,您可以确保您拥有正确列表的正确数据:

function detailInit(e) {
    var list= $("#listViewPackage" + e.data.WorkflowInstanceId).data("kendoGrid");      

    list.dataSource.data(e.data.TaskSumariesList) 
}
于 2015-05-13T18:00:49.657 回答
0

事实上,肖恩是对的。更多信息请参考: Kendo UI Grid: Detail Template Binding

您还可以将DataSource(ds => ds.Ajax())添加到您的第二个网格。

@(Html.Kendo().ListView<ITS.BusinessModel.TaskManager.WorkflowInstanceSummaryItem>("#=TaskSumaries#")
        .Name("listViewPackage")
        .TagName("div")
        .ClientTemplateId("SummeriesTemplate")
        .DataSource(ds => ds.Ajax()) 
        .ToClientTemplate()
        )

似乎客户端模板不适用于本地绑定网格。

于 2016-02-17T10:03:58.410 回答