在InCell编辑模式下,Kendo UI ASP.Net MVC ForeignKey列DataSource

tpa*_*tel 3 kendo-ui kendo-grid

我在页面上有Kendo Grid和ForeignKey列.如下所述,使用ViewData填充ForeignKey列.

column.ForeignKey(x => x.ProductID, (List<Product>)ViewData["products"], "ID", "ProdName");
Run Code Online (Sandbox Code Playgroud)

网格可以批量(InCell)模式编辑,如下所示...

.Editable(editable => editable.Mode(GridEditMode.InCell)
Run Code Online (Sandbox Code Playgroud)

我想根据在Grid外部定义的其他下拉列表中选择的值,在页面加载后修改网格中的ProductID列的集合.

我怎样才能做到这一点?我可以使用jQuery吗?

我在这里找到类似的例子...... http://www.telerik.com/community/forums/aspnet-mvc/grid/cascading-dropdowns-in-grid-edit---foreignkey-columns.aspx

谢谢.

tpa*_*tel 5

我想出了如何使用EditorTemplate为外键列过滤Product下拉列表.

这是我对产品的列定义.

c.ForeignKey(x => x.ProductID, (List<Product>)ViewData["products"], "ID", "ProdName").EditorTemplateName("ProductIDEditor");
Run Code Online (Sandbox Code Playgroud)

这是Product,ProductIDEditor.cshtml 的编辑器模板

@using Kendo.Mvc.UI

@(Html.Kendo().DropDownListFor(m => m)
    .AutoBind(false)
    .OptionLabel("Select a value...")
    .DataTextField("ProdName")
    .DataValueField("ID")
    .DataSource(dataSource =>
    {
        dataSource.Read(read => read.Action("FilterProducts", "Home").Data("filterProducts"))
        .ServerFiltering(true);
    })                                   
)
@Html.ValidationMessageFor(m => m)
Run Code Online (Sandbox Code Playgroud)

在我的主要VIEW Index.cshtml中,我添加了filterProductsJavaScript处理程序,它将JSON对象传递productID给控制器.

function filterChargeTypes()
{
    return {
        productID: $("#ProductID").val()
    };
}
Run Code Online (Sandbox Code Playgroud)

这是监听过滤事件的控制器 ......

public ActionResult FilterProducts(string productID)
{
    // do your filtereing based on productID.
}
Run Code Online (Sandbox Code Playgroud)

FilterProducts 每次用户点击下拉菜单以获取过滤值时都会调用.