级联下拉列表作为telerik网格上的绑定列

时间:2011-06-19 16:12:15

标签: telerik telerik-grid telerik-mvc

我不确定是否有人遇到过这样的问题。

在我的ASP.NET MVC应用程序中,我有一个Telerik Grid控件,它有前2列作为下拉列表。我将每个列的编辑器模板作为telerik下拉列表。这些下拉列表位于用户控制(.ascx)文件中。 ascx文件的代码如下:

用户控制1:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>

<%=Html.Telerik().DropDownListFor(m => m)
             .BindTo(new SelectList((IEnumerable)ViewData["AccountTypeSelectList"], "lookUpCode", "description"))

%>

用户控制2:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>


<%=Html.Telerik().DropDownListFor(m => m)
             .BindTo(new SelectList((IEnumerable)ViewData["CreditAgenciesSelectList"], "description", "description"))

%>

以下是我的View的代码,其中Grid绑定列是:

@(Html.Telerik().Grid<DealerOfferBaseKPI>()
                            .Name("T_KPI_CA")
                            .DataKeys(key => key.Add(o => o.DealerOfferRuleDetailId))
                            .ToolBar(commands =>
                            {
                                commands.Insert().ButtonType(GridButtonType.ImageAndText).ImageHtmlAttributes(new { style = "margin-left:0" });
                            })
                            .Columns(columns =>
                            {
                                columns.Bound(o => o.AccountType).Title("Account Type").ClientTemplate("<#= AccountType #>").EditorTemplateName("AccountType");
                                columns.Bound(o => o.CreditAgency).Title("Credit Agency").ClientTemplate("<#= CreditAgency #>").EditorTemplateName("CreditAgency");
                                columns.Bound(o => o.PercentageAllowed).Title("Percentage Allowed");
                                columns.Bound(o => o.EffectiveDate).Title("Effective Date").EditorTemplateName("Date").Format("{0:MM/dd/yyyy}");
                                columns.Bound(o => o.ExpireDate).Title("Expire Date").EditorTemplateName("Date").Format("{0:MM/dd/yyyy}");
                                columns.Command(commands =>
                                {
                                    commands.Delete().ButtonType(GridButtonType.BareImage);
                                }).Title("Actions");
                            })
                            .DataBinding(dataBinding =>
                            {
                                dataBinding.Ajax()
                                    .Select("_SelectKPIBatchEditing", "DealerOfferManagement", new { filterType = "KPIcreditAgency" }).Enabled(true)
                                    .Update("_SaveKPIBatchEditing", "DealerOfferManagement").Enabled(true);
                            })
                            .ClientEvents(ce => ce.OnSave("GridValidation"))
                            .Selectable()
                            .Scrollable()
                            .Pageable()
                            .Sortable()
                            )

我正在尝试将这两个下拉列表作为级联。第一个下拉列表的值为 Residential,Commercial和Both 。第二个下拉列表中的值是 Equifax,Experian,TransUnion和Intelliscore 。当我在第一个下拉列表中选择住宅时,我希望第二个下拉列表显示所有内容,但不会显示Intelliscore。对于第一个下拉列表的所有其他值,我希望显示第二个下拉列表的所有值。

我通过使用来自控制器的2个ViewData对象传递2个下拉列表的值。

显示代码后,选择列表中的值会显示在下拉列表中。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

在第一个下拉用户javascript的更改clientevent上添加或删除元素here