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

Kendo-MVC ListView默认选中首个项并加载详情的实现问题

解决Kendo ListView页面加载默认选中首项并加载详情的问题

核心思路是将详情加载逻辑抽离为独立函数,在onDataBound事件中判断数据存在后选中首项并调用该函数,无数据时直接跳过操作,同时保证手动选中和自动选中的逻辑一致。

修改后的代码片段

// 抽离详情加载逻辑为独立可复用函数
function loadJobDetails(dataItem) {
    $.ajax({
        type: "GET",
        url:"@Url.Action("GetCard","User")",
        data: { id: dataItem.ID },
        success: function (viewHTML) {
            $("#skeleton").hide();
            $(".selected-item").html(viewHTML);
        },
        error: function (errorData) { console.log(errorData) }
    });
}

function onChange(e) {
    var selected = e.sender.select();
    var dataItem = e.sender.dataItem(selected[0]);
    loadJobDetails(dataItem); // 调用统一的加载逻辑
}

function onDataBound(e) {
    var listView = e.sender;
    var data = listView.dataSource.data();
    
    // 无数据时直接返回,不执行任何操作
    if (data.length === 0) {
        return;
    }
    
    // 选中当前页的首个列表项
    var firstItem = listView.content.children().first();
    listView.select(firstItem);
    
    // 获取对应数据项并加载详情
    var firstDataItem = listView.dataItem(firstItem);
    loadJobDetails(firstDataItem);
}

// 其余原有函数保持不变
function searchCriteria() {
    return {
        countyName: $("#countyName").val(),
        jobType: $("#jobType").val()
    };
}

$("#btnSubmit").click(function () {
    $("#jobsListView").data("kendoListView").dataSource.read();
});

$("#btnClear").click(function () {
    $("#JobTitle").val('');
    $("#countyName").val('');
    $("#jobType").val('');
    $("#divName").val('');
    $("#jobsListView").data("kendoListView").dataSource.read();
});

关键说明

  1. 独立函数复用:将AJAX加载详情的逻辑抽成loadJobDetails,避免重复代码,确保手动选中和自动选中的行为完全一致
  2. 无数据判断:在onDataBound中先检查数据源长度,为空时直接返回,符合需求
  3. 可靠获取实例与数据:通过e.sender直接获取ListView实例,比重新查询DOM更高效;用listView.dataItem(firstItem)准确获取选中项的完整数据,解决原代码无法获取ID的问题
  4. 兼容搜索场景:后续点击搜索或清空按钮重新加载数据时,onDataBound会自动执行,选中新数据的首项并加载详情,适配动态数据变化

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 11:54:53