Kendo DropDownList 默认选中值

Posted

技术标签:

【中文标题】Kendo DropDownList 默认选中值【英文标题】:Kendo DropDownList default selected value 【发布时间】:2014-10-05 17:38:03 【问题描述】:

我有一个剑道下拉列表:

@(html.Kendo().DropDownList()
    .Name("concessions")
    .HtmlAttributes(new  style = "width:320px" )
    .DataTextField("Description")
    .DataValueField("Id")
    .DataSource(source =>
    
        source.Read(read =>
        
            read.Action("getConcessionsDDL", "MasterData");
        );
    )
)

从控制器中的getConcessionsDDL方法读取数据源:

public ActionResult GetConcessionsDDL()

    ConcessionModel cm = new ConcessionModel();
    var aux = cm.getConcessions();
    return Json(aux.concessions.Select(sme => new ConcessionModel  Description = sme.concession.mediumDescription, Id = sme.concession.id ).Distinct(), JsonRequestBehavior.AllowGet);

它工作正常,DropDownList 按预期填充。但现在我想定义它的默认选择值。现在,默认值始终是列表的第一个。

我使用了.SelectedIndex(4),它可以工作:在这种情况下,选定的索引将为 4。但我想在控制器中定义它。

我尝试在ViewBag 中传递选定的索引,但没有成功:

ViewBag.selectedIndex = 21;

在视图中:

@(Html.Kendo().DropDownList()
    .Name("concessions")
    .HtmlAttributes(new  style = "width:320px" )
    .DataTextField("Description")
    .DataValueField("Id")
    .DataSource(source =>
    
        source.Read(read =>
        
            read.Action("getConcessionsDDL", "MasterData");
        );
    )
    .SelectedIndex(ViewBag.selectedIndex)
)

到目前为止没有运气。有什么帮助吗?

【问题讨论】:

不应该是 .SelectedIndex(ViewBag.selectedIndex) 吗?查看包。 selectedIndex 不是 ViewBag.SelectedIndex 注意到了,但ViewBag 值不区分大小写,所以ViewBag.selectedIndex = ViewBag.SelectedIndex 为什么不把剑道下拉列表重命名为你的视图模型中的东西(例如你的'Id'属性)?这样selectedindex会自动设置,而不是通过viewbag传入。 @kryptonkal,你的意思是.Name("Id")?我看不出这将如何将 id 值绑定到 Road 模型,因为有很多 id。 getConcessionsDDL 方法带来了数据库的所有让步,不受任何其他模型的约束。 您正在让用户选择一个特许权,那么为什么不在您的视图模型中拥有一个 ConcessionId 属性。只需将其用作控件名称并在页面加载时分配属性即可。 【参考方案1】:

解决方案很简单,将值添加为 HTML 属性就可以了:

.HtmlAttributes(new value = ViewBag.ConcessionId )

像这样:

@(Html.Kendo().DropDownList()
    .Name("concessions")
    .HtmlAttributes(new  style = "width:320px" )
    .DataTextField("Description")
    .HtmlAttributes(new  value = ViewBag.ConcessionId )
    .DataValueField("Id")
    .DataSource(source =>
    
        source.Read(read =>
        
            read.Action("getConcessionsDDL", "MasterData");
        );
    )
)

【讨论】:

以上是关于Kendo DropDownList 默认选中值的主要内容,如果未能解决你的问题,请参考以下文章

HTML.Kendo().Dropdownlist 设置默认项

DropDownList默认选中

Angular 2 如何禁用 kendo-dropdownlist

请教如何修改WPFDatePicker控件的默认值默

多次点击Button后DropDownList选中的值变为默认值?

kendo 网格控件中的 DropDownList(通过 ClientTemplate)