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

Kendo Grid中ClientTemplate子网格数据绑定失败问题排查

解决Kendo Grid子网格无法加载数据的问题

我帮你梳理了代码里的几个核心问题,调整后应该能解决子网格为空的情况:

1. 子网格自动绑定时机错误

你当前给子网格设置了.AutoBind(true),但主网格是通过Ajax异步加载数据的——当ClientTemplate渲染时,#=ID#这个模板变量还没被Kendo解析替换,导致子网格发起请求时OrderID参数是空值,后端拿不到正确参数自然返回空数据。

修改方案:将子网格的.AutoBind(true)改为.AutoBind(false),关闭自动绑定,等待主网格数据加载完成后手动触发子网格的数据读取。

2. 子网格初始化与数据加载逻辑优化

原来的onGridDataBound仅将脚本移到body,这种方式不够可靠。我们需要遍历主网格的每一行,找到对应子网格并传递正确的请求参数:

修改后的CSHTML子网格代码

columns.Template(p => "").Title("").ClientTemplate(
    Html.Kendo().Grid<Sales.ProductDetails>()
        .Name("Orders_#=ID#")
        .Columns(c => {
            c.Bound(r => r.Name);
            c.Bound(r => r.Amount);
            c.Bound(r => r.Quantity);
        })
        .AutoBind(false) // 关闭自动绑定
        .DataSource(dataSource1 => dataSource1
            .Ajax()
            .PageSize(200)
            .Read(read1 => read1.Action("GetProductDetails", "Sales", new { area = "Sales" })) // 先不指定OrderID,后续动态传递
        )
        .ToClientTemplate()
        .ToHtmlString()
);

修改后的JavaScript DataBound事件

function onGridDataBound(e) {
    var mainGrid = e.sender;
    // 遍历主网格的每一行数据
    mainGrid.tbody.find("tr").each(function() {
        var rowData = mainGrid.dataItem(this);
        var subGridId = "Orders_" + rowData.ID;
        var subGrid = $("#" + subGridId).data("kendoGrid");
        
        if (subGrid) {
            // 给子网格传递正确的OrderID并触发数据读取
            subGrid.dataSource.read({ OrderID: rowData.ID });
        }
    });
}

3. 后端接口参数校验

请确认你的GetProductDetails控制器方法能正确接收OrderID参数,示例如下:

public ActionResult GetProductDetails([DataSourceRequest] DataSourceRequest request, int OrderID)
{
    // 根据OrderID查询对应产品详情数据
    var productData = _salesService.GetProductDetailsByOrderId(OrderID);
    return Json(productData.ToDataSourceResult(request));
}

同时要确保主网格返回的ID字段值有效(非空、格式正确),因为子网格的命名依赖这个字段,若ID异常会导致子网格无法被正确找到。

调整后,主网格数据绑定完成时会逐行给对应子网格传递正确的OrderID并触发数据读取,子网格就能正常加载数据了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 20:27:56