You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AJAX获取数据后无法选中Kendo DropDownList值求解决方案

解决Kendo DropDownList在Grid异步数据加载后无法选中值的问题

你遇到的核心问题是:grid.dataSource.read()是异步操作——当你在它之后立刻尝试设置DropDownList的值时,Grid的数据还没加载完成,DropDownList的选项可能还没更新,导致无法匹配选中。下面给你两种靠谱的解决方案:

方案一:利用DataSource的change事件触发设置逻辑

当Grid的数据源完成加载并更新时,会触发change事件,我们可以在这个事件里设置DropDownList的值:

function openWindow(e) { 
  var wdw = $("#myWindow").data("kendoWindow"); 
  wdw.open(); 
  e.preventDefault(); 
  
  var dataItem = this.dataItem($(e.currentTarget).closest("tr")); 
  var grid = $("#grid").data("kendoGrid"); 
  // 获取你的DropDownList实例,替换成实际的ID
  var dropdown = $("#yourDropDownId").data("kendoDropDownList"); 

  // 先移除之前绑定的change事件,避免重复触发
  grid.dataSource.off("change");
  
  // 绑定change事件,数据加载完成后执行
  grid.dataSource.on("change", function() {
    // 用value方法设置对应ID,替换成你实际要绑定的字段
    dropdown.value(dataItem.TargetPropertyId);
    // 如果需要用文本匹配,也可以用text方法:dropdown.text(dataItem.TargetPropertyText);
    
    // 可选:如果后续不需要再触发这个逻辑,解绑事件
    grid.dataSource.off("change");
  });

  grid.dataSource.transport.options.read.url = '@Url.Action("BindingList", "AttributeBinding")' + "?formId=" + dataItem.FormId; 
  grid.dataSource.read(); 
  $("#title").html(dataItem.FormTitle);
}

方案二:使用read()返回的Deferred回调

Kendo的dataSource.read()会返回一个jQuery Deferred对象,我们可以用done()方法在数据加载完成后执行设置逻辑:

function openWindow(e) { 
  var wdw = $("#myWindow").data("kendoWindow"); 
  wdw.open(); 
  e.preventDefault(); 
  
  var dataItem = this.dataItem($(e.currentTarget).closest("tr")); 
  var grid = $("#grid").data("kendoGrid"); 
  var dropdown = $("#yourDropDownId").data("kendoDropDownList"); 

  grid.dataSource.transport.options.read.url = '@Url.Action("BindingList", "AttributeBinding")' + "?formId=" + dataItem.FormId; 
  
  // 在read()完成后执行设置逻辑
  grid.dataSource.read().done(function() {
    dropdown.value(dataItem.TargetPropertyId);
    // 或者 dropdown.text(dataItem.TargetPropertyText);
  });

  $("#title").html(dataItem.FormTitle);
}

额外要注意的点:

  • 确保你要设置的value(或text)确实存在于DropDownList的选项里,否则无法选中
  • 检查DropDownList的dataValueField和dataTextField配置是否正确,要和你传入的值类型匹配
  • 如果DropDownList有独立的数据源,需要确保它的数据源也完成加载后再设置值,逻辑和上面一致

内容的提问来源于stack exchange,提问作者Marcin Grzegorczyk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:03:03