我有一个 Kendo 层次网格,其中主网格包含Client
详细信息和子网格包含Point of Contacts
。我能够通过Client ID
从主网格进入子网格Read
操作和数据加载正常。然而,问题是在通过的时候出现的Client ID
into a Add New Point of Contact
子网格中的按钮。如果我对值进行硬编码,则控制器方法运行良好。但是无法选择参考Client ID
.
子网格如下:
<script id="template" type="text/kendo-tmpl">
@(Html.Kendo().Grid<Track24.Billing.Web.Models.ListPointOfContactViewModel>()
.Name("grid_#=ClientID#")
.Columns(columns =>
{
columns.Bound(p => p.POC_ClientID);
columns.Bound(p => p.ContactName);
columns.Bound(p => p.RegionName).Filterable(filterable => filterable.UI("regionFilter"));
columns.Bound(p => p.CountryName).Filterable(filterable => filterable.UI("countryFilter"));
columns.Bound(p => p.ContactEmail);
columns.Bound(p => p.ContactNumber);
})
.ToolBar(toolbar => toolbar.Template(@<text>
<a class="k-button k-button-icontext k-grid-add subgridadd" href="@Url.Action("CreatePOC", "PointOfContact", new { id = "\\#= ClientID\\#" })"><span class="k-icon k-add"></span>Add new Point-of-Contact</a></text>))
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(10)
.Read
(
read => read.Action("ClientBinding_PointOfContacts", "PointOfContact", new { clientID = "#=ClientID#" })
)
)
.Pageable()
.Sortable()
.ToClientTemplate()
)
</script>
子网格与主网格正确绑定;因此ClientID在子网格中被正确读取。但是,我无法在Add New
按钮。
编辑1:这是我的主(父)网格:
<div class="row">
<div class="box">
<div class="box-body table-responsive">
@(Html.Kendo().Grid<Track24.Billing.Web.Models.ListClientViewModel>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(e => e.ClientName);
columns.Template(@<text></text>).ClientTemplate("<a class='btn btn-primary grid-edit' href='" + @Url.Action("EditClient", "PointOfContact", new { id = "#:ClientID#" }) + "'><span class='glyphicon glyphicon-edit'></span>Edit</a> <a class='btn btn-primary' data-href='" + @Url.Action("DeleteClient", "PointOfContact", new { id = "#:ClientID#" }) + "' data-toggle='modal' data-target='\\#confirm-delete' href='\\#' ><span class='glyphicon glyphicon-trash'></span>Delete</a>");
})
.Sortable()
.Pageable()
.Scrollable()
.ClientDetailTemplateId("template")
.HtmlAttributes(new { style = "height:430px;" })
.DataSource(dataSource => dataSource
.Ajax()
.Model(model => model.Id(e => e.ClientID))
.PageSize(6)
.Read(read => read.Action("Client_Read", "PointOfContact"))
)
.Events(events => events.DataBound("dataBound"))
.ToolBar(toolbar => toolbar.Template(@<text><a id="btnCreate" class="k-button k-button-icontext k-grid-add" href="@Url.Action("CreateClient", "PointOfContact")"><span class="k-icon k-add"></span>Add new Client</a></text>))
)
</div>
</div>
</div>
编辑 2:我尝试通过创建 URL 传递链接,但它给了我一个错误Cannot perform runtime binding on a null reference
.ToolBar(toolBar =>
{
toolBar.Create();
toolBar.Save();
})
.DataSource(dataSource => dataSource
.Ajax()
.Model(model =>
{
model.Id(p => p.POC_ClientID);
})
.PageSize(10)
.Read
(
read => read.Action("ClientBinding_PointOfContacts", "PointOfContact", new { clientID = "#=ClientID#" })
)
.Create(create => create.Action("CreatePOC", "PointOfContact", new { pclientID = Model.Id }))
)
.Pageable()
.Sortable()
.ToClientTemplate()