HTML.Kendo().Dropdownlist 设置默认项
Posted
技术标签:
【中文标题】HTML.Kendo().Dropdownlist 设置默认项【英文标题】:HTML.Kendo().Dropdownlist set default item 【发布时间】:2013-08-11 13:50:15 【问题描述】:如何在 html.Kendo().Dropdownlist().HTMLAttribute() 中设置默认项?
虽然我已经通过代码设置了它。但不知何故,它从列表中获取了一个默认项目并将其显示为第一位。
可能是它从代码的某个地方得到它。但我无法找到。这就是为什么我想从其他地方设置默认项目(“--Select--”)。 我正在考虑从 .HTMLAttributes() 设置它。
有人知道这是正确的方法吗?如果是,那么我们该怎么做?不然有没有其他办法解决呢?
我正在使用下面的代码来绑定剑道下拉列表:
@(Html.Kendo().DropDownList()
.Name("SelectedMediaType")
.DataTextField("Text")
.DataValueField("Text")
.Value(Model)
.BindTo(ViewBag.MediaTypes)
)
我在其中将 Dropdownlist 与 ViewBag.MediaTypes 绑定。
那么有什么办法可以在与viewbag绑定后设置默认值呢?
【问题讨论】:
【参考方案1】:我对 KendoUI 很陌生,但我相信您可以使用 .value 属性设置默认值:http://docs.kendoui.com/api/web/dropdownlist#configuration-value
$("#dropdownlist").kendoDropDownList(
dataSource: ["Car", "Bike", "T.V", "--Select One--"],
value: "--Select One--"
);
【讨论】:
【参考方案2】:我能够让它工作的唯一方法是处理 DataBound 事件,并在那里设置默认值。
在这个例子中,我绑定到服务器上的一个动作,所以也许你只需要 .Events 行和末尾的 javascript:
@(Html.Kendo().DropDownListFor(model => model.SalesPersonID)
.DataTextField("FullName")
.DataValueField("ID")
.Events(ev => ev.DataBound("SalesPersonID_DataBound"))
.DataSource(source =>
source.Read(read =>
read.Action("GetSalesPersonList", "Proposal");
);
)
)
<script type="text/javascript">
//Sets the default value for the DropDownList.
function SalesPersonID_DataBound()
this.value("@Model.SalesPersonID");
</script>
我怀疑问题是这样的:如果在绑定之前或绑定期间设置了值,它就会丢失。您需要在绑定完成后立即设置它,DataBound 事件是最好的方法。
【讨论】:
+1 这个解决方案对我有用。我们需要额外的脚本来从(视图)模型数据中设置选定的索引,这似乎很愚蠢;但这是 Telerik 的抱怨 @MacSalty 我感觉这实际上已在最新版本的 Kendo 中得到修复。你是最新的吗?以上是关于HTML.Kendo().Dropdownlist 设置默认项的主要内容,如果未能解决你的问题,请参考以下文章
kendo 网格控件中的 DropDownList(通过 ClientTemplate)
Kendo UI 将 DropDownList 添加到 Grid (MVC)
Kendo DropDownList 问题在 MVC 上调用操作