Kendo ui 剑道级联下拉列表MVC-设置值
我有DropDownList,由于DropDownList项目,他的数据被动态加载。在DataBound事件中,我希望更改为通过JavaScript选择第一个值。我使用Kendo ui 剑道级联下拉列表MVC-设置值,kendo-ui,kendo-grid,kendo-asp.net-mvc,kendo-dropdown,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,Kendo Dropdown,我有DropDownList,由于DropDownList项目,他的数据被动态加载。在DataBound事件中,我希望更改为通过JavaScript选择第一个值。我使用setdeffalueso函数进行此操作。当数据加载到操作列表功能中时,自动选择第一项。但当我单击以保存内联编辑网格行时,更新请求不包含更改的值。只有当我用鼠标点击它时,它才起作用 如何解决这个问题?谢谢 网格: 编辑器模板: @(Html.Kendo().DropDownList() .Name("Operation")
setdeffalueso
函数进行此操作。当数据加载到操作列表功能中时,自动选择第一项。但当我单击以保存内联编辑网格行时,更新请求不包含更改的值。只有当我用鼠标点击它时,它才起作用
如何解决这个问题?谢谢
网格:
编辑器模板:
@(Html.Kendo().DropDownList()
.Name("Operation")
.OptionLabel("Vyberte výkon...")
.CascadeFrom("Project")
.DataValueField("Id")
.Events(ev => ev.DataBound("SetDefValuesO") )
.HtmlAttributes( new { requiredvalidationmessage = "required field", required = "required" })
.DataTextField("Code")
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GetCascadeOperations", "Home")
.Data("filterOperations");
}).ServerFiltering(true);
})
.Enable(false)
.AutoBind(false))
function SetDefValuesO(){
var OperationCount = $("#Operation").data("kendoDropDownList").dataSource._data.length;
console.log(OperationCount);
if(OperationCount == 1){
$("#Operation").data("kendoDropDownList").value($("#Operation").data("kendoDropDownList").dataSource._data[0].Id);
console.log($("#Operation").val());
}
解决者:
function SetDefValuesO(){
var OperationCount = $("#Operation").data("kendoDropDownList").dataSource._data.length;
if(OperationCount == 1){
// $("#Operation").data("kendoDropDownList").select(1);
$("#Operation").data("kendoDropDownList").value($("#Operation").data("kendoDropDownList").dataSource._data[0].Id);
this.trigger("change"); // solution
}
}
首先,我建议使用dropDownList数据源,而不是像“\u data”这样的内部方法 此外,使用当前方法时,应确保仅为新记录设置默认值,否则在编辑时将覆盖当前值。可能的解决方案是更新“数据绑定”事件处理程序,如下所示:
function SetDefValuesO(){
var widget = this;
var row = widget.wrapper.closest("tr");
var grid = row.closest("[data-role=grid]").data("kendoGrid");
var model = grid.dataItem(row);
if (model.isNew()) {
model.set("Operation", widget.dataSource.data()[0]);
}
首先,我建议使用dropDownList数据源,而不是像“\u data”这样的内部方法 此外,使用当前方法时,应确保仅为新记录设置默认值,否则在编辑时将覆盖当前值。可能的解决方案是更新“数据绑定”事件处理程序,如下所示:
function SetDefValuesO(){
var widget = this;
var row = widget.wrapper.closest("tr");
var grid = row.closest("[data-role=grid]").data("kendoGrid");
var model = grid.dataItem(row);
if (model.isNew()) {
model.set("Operation", widget.dataSource.data()[0]);
}
嗨,我的回答帮你解决问题了吗?如果是的话,你能把我的回答标记为回答吗?这样,使用谷歌查找问题的人可以更确信答案是正确的。提前谢谢。嗨,我的回答帮你解决问题了吗?如果是的话,你能把我的回答标记为回答吗?这样,使用谷歌查找问题的人可以更确信答案是正确的。提前谢谢。