我有以下剑道DROPDOWNLIST:设置默认值“所选=真” SelectListItem
@(Html.Kendo().DropDownListFor(m => Model.CmtsId).Name("#=uid#CmtsId")
.Animation(false)
.DataSource(a => a.Read(r => r.Url("/webAPIpath")))
.DataTextField("Text")
.DataValueField("Value")
.OptionLabel("Select")
.ToClientTemplate())
以下代码是在“webAPIpath”的另一端,并构建用于上述下拉一个的SelectList作为一个选项列表使用:
var results = await _cmtsService.GetAllCmts(LogData);
if (results.Status == ResponseStatus.Success)
{
var markets = await _locationService.GetMarketsForHeadEndAsync(headEnd, LogData);
var prevSelected = await _pendingChangesService.GetPendingPortSelections(nodeId, LogData);
var list = new List<SelectListItem>();
foreach (var cmts in results.Data.Where(a => markets.Data.Any(b => b.Id == a.MarketId)))
{
var market = markets.Data.FirstOrDefault(a => a.Id == cmts.MarketId);
var mfg = _deviceService.GetManufacturerAsync(cmts.ManufacturerId, LogData);
var model = _deviceService.GetModelAsync(cmts.ModelId, LogData);
await Task.WhenAll(mfg, model);
list.Add(new SelectListItem()
{
Text =
$"cmts{cmts.Number}-{market.MarketAbbreviation}/{mfg.Result.Data.Manufacturer}/{model.Result.Data.Model}/{cmts.DocsisCapability}",
Value = cmts.Id.ToString()
});
}
//Set selected value if previous selection exists
foreach (var item in list.Where(item => item.Value.Equals(prevSelected.Data?.NewCMTSID.ToString())))
{
item.Selected = true;
}
return Ok(list);
}
return InternalServerError(results.Exception);
我想是在list
具有item.Selected = true;
是我的下拉列表的默认值item
。我不能在我的生活中找出如何让kendo下拉菜单尊重它绑定到的选择列表中项目的Selected状态。我找到的所有kendo文档告诉我要么使用.Value()
要么使用.SelectedIndex()
,但我不能这样做(或者不知道我会怎么做),因为列表中的“Selected”项是从单独的数据库查询中动态确定的,所以我将不得不做一个单独的调用,然后做一个比较,并通过javascript/jquery设置值。
所以,简而言之,我怎么剑道()。DropDownListFor设置默认选择的选项,在我的SelectList项目与Selected = true;
我不熟悉的剑道控制,但如果他们的工作方式类似于标准控件,选定的属性SelectListItem是典型的在大多数情况下y被忽略,并且实际值来自模型属性(在这种情况下是Model.CmtsId)。 –
如果'CmtsId'的值与其中一个选项的值匹配,那么该选项将被选中。设置'SelectListItem'的'Selected'属性在绑定到一个属性时会被忽略(你可以删除第二个'foreach'循环) –