我正在使用带有ajax绑定的Kendo DropdownList。
使用这些代码,我无法设置来自model的初始值。只需在列表中填入项目并选择第一项。
@(Html.Kendo().DropDownList()
.Name("NATIONALITY")
.DataTextField("DESCRIPTION").HtmlAttributes(new { style = "width:220px" })
.DataValueField("REFERENCEID")
.Value(Model.NATIONALITY)
//Placeholder("SELECT")
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GetDefinitionDetails", "Definition", new { definitionCode = "NATIONALITY", addEmptyRow = false });
}).ServerFiltering(true);
}).ServerFiltering(true);
}))
但当我将Html.Kendo()。DropDownList()更改为Html.Kendo()。Combobox()时,它还会填充列表并按预期设置初始值(这是通过模型传递的值。)< / p>
答案 0 :(得分:6)
使用最新版本(可能适用于早期版本)构建KendoUI,可以在下拉列表中设置初始Text值:
....
.Value(Model.DOCTORCODE.ToString()) //DOCTORCODE is guid type
.Text(Model.DOCTOR) //DOCTOR is string type.This is optional.It should be works without .Text property
答案 1 :(得分:3)
在Kendo DropDownList
上,您可以指定SelectedIndex
,如下所示:
@(Html.Kendo().DropDownList().SelectedIndex(myIndex)
.//other builder stuff
使用DropDownList
,您只能指定要选择的项目的索引。您无法通过其文本选择此项目。
使用客户端API,您可以使用the value method根据文本设置设置选定值。只需添加一个调用JavaScript函数的e vent on the data bound即可。然后,此功能可以根据文本选择所需的项目。
答案 2 :(得分:0)
对我来说有用的是将下拉列表框命名为与模型中的属性相同:
View model (adminUserViewModel.cs)
//....other properties....
[Display(Name = "Security Level")]
[UIHint("SecurityLevelsEditor")]
public SecurityLevelViewModel securityLevel { get; set; }
in my /Views/Shared folder I have a custom template named:
SecurityLevelsEditor.cshtml
@model WebAdmin.Models.SecurityLevelViewModel
@(Html.Kendo().DropDownList().Name("securityLevel")
.DataTextField("levelDescription")
.DataValueField("securityLevelID")
.DataSource(datasource => datasource.Read(source => source.Action("Index", "SecurityLevels"))
)
)
以下是它在index.cshtml文件中的连接方式:
@model IEnumerable<WebAdmin.Models.AdminUserViewModel>
@(Html.Kendo().Grid(Model).Name("adminUsersGrid")
.Columns(columns =>{
columns.Bound(item => item.userName);
columns.Bound(item => item.securityLevel).ClientTemplate("#: securityLevel.levelDescription #" );
columns.Bound(item => item.firstName);
columns.Bound(item => item.lastName);
columns.Bound(item => item.email);
columns.Command(command => { command.Edit(); command.Destroy(); });
})
.DataSource(dataSource => dataSource
.Ajax()
.Model(m => {
m.Id(p => p.userID);
m.Field(item => item.securityLevel).DefaultValue(ViewData["defaultSecurityLevel"] as WebAdmin.Models.SecurityLevelViewModel);
})
.Update(u => u.Action("Update", "UserAdmin"))
.Create(c => c.Action("_Create", "UserAdmin"))
.Destroy(x => x.Action("_Destroy", "UserAdmin"))
.Read(read => read.Action("clientIndex", "UserAdmin", new { id = @ViewBag.accountID }))
)
.Pageable().Sortable().Filterable()
.ToolBar(toolbar => toolbar.Create())
.Editable(e => e.Mode(GridEditMode.PopUp).TemplateName("AdminUserPopup"))
)
答案 3 :(得分:0)
如果下拉列表位于模板中,请使用.HtmlAttributes
设置初始值。
@(Html.Kendo()
.DropDownList()
.Name("barDropdown")
.DataTextField("Text")
.DataValueField("Value")
.DataSource(ds => ds
.Read(read => read.Action("getBar", "SomeController").Type(HttpVerbs.Post)))
.HtmlAttributes(new { value = "#:BarValue#" })
.ToClientTemplate()
)