http://demos.telerik.com/aspnet-mvc/grid/editing-custom
希望这很清楚。
我有一个包含现有应用程序网格的视图。只有在视图中选择其他输入后才需要加载网格。如果您知道列表将提前包含的内容,则使用上述示例之一的“模板”方法。呈现视图时网格数据绑定,然后呈现任何ClientTemplate。因此,重新绑定网格似乎不会影响下拉列表,因为它已经被渲染。
然而,在用户开始向网格添加项目之前,下拉列表的内容无法知道,因此我只需要定义下一个将在下拉列表中的内容,而不是从最初的网格开始时显示。
如何在网格绑定或读取操作后定义或填充下拉列表?
[更新]
这是有问题的网格列,现在我已经将列设置为拥有自己的数据源,但是从不调用GetSystemItemCodes操作。网格本身有一个读取操作(未显示),但由于模板在第一次显示网格时已经渲染,因此我更新视图数据并不重要,它已经被渲染。
columns.Bound(rdetail => rdetail.ItemCode).Title("Item Code").ClientTemplate((@Html.Kendo().DropDownList()
.DataSource(datasrc => datasrc.Read(read => read.Action("GetSystemItemCodes", "SalesVoucher")))
.HtmlAttributes(new { id = "itemCodeDropDown" })
.OptionLabel("- Select Item Code - ")
.DataValueField("ItemCodeID")
.DataTextField("ItemCodeValue")
.Name("itemCodeDropDown")
.Events(e => e.Change("OnItemCodeChange"))
.ToClientTemplate()).ToHtmlString()).Width(230);
我认为我的下一个方法是在添加新行时使用返回的项目来过滤下拉列表。
因此,假设我的问题是:在以这种方式为单个列定义数据源时,何时调用其读取操作?在网格上读取操作之后?如何手动导致列数据源刷新或重新绑定?