Kendo ui 剑道级联下拉列表MVC-设置值

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")

我有DropDownList,由于DropDownList项目,他的数据被动态加载。在DataBound事件中,我希望更改为通过JavaScript选择第一个值。我使用
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]);
   }

嗨,我的回答帮你解决问题了吗?如果是的话,你能把我的回答标记为回答吗?这样,使用谷歌查找问题的人可以更确信答案是正确的。提前谢谢。嗨,我的回答帮你解决问题了吗?如果是的话,你能把我的回答标记为回答吗?这样,使用谷歌查找问题的人可以更确信答案是正确的。提前谢谢。