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

SharePoint 2013汇总列表Web部件折叠时无法更新状态问题咨询

解决SharePoint 2013汇总列表Web部件折叠状态不更新的问题

这个问题我之前也碰到过,本质是汇总列表Web部件在折叠状态下,SharePoint的客户端渲染机制没有主动触发数据刷新,只有当部件展开或者页面全局刷新时才会重新拉取最新的列表统计数据。下面给你几个可行的解决方案:

方案一:自定义JavaScript强制折叠状态下刷新数据

你可以通过添加自定义脚本,监听关联列表的变化(比如新项添加、状态更新),然后强制汇总列表Web部件同步最新计数:

  1. 先通过浏览器开发者工具(F12)找到汇总列表Web部件的DOM ID,一般格式是WebPartWPQx(x为数字后缀);
  2. 编辑页面,添加一个内容编辑器Web部件,插入以下脚本:
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function() {
    // 替换为你的关联列表ID
    var targetListId = "{关联列表的GUID}";
    // 替换为汇总列表Web部件的实际ID
    var summaryWebPartId = "WebPartWPQx";

    // 定期检查并更新列表计数
    setInterval(function() {
        var countDisplay = document.querySelector("#" + summaryWebPartId + " .ms-list-summary-count");
        if (!countDisplay) return;

        var ctx = SP.ClientContext.get_current();
        var targetList = ctx.get_web().get_lists().getById(targetListId);
        ctx.load(targetList, 'ItemCount');
        
        ctx.executeQueryAsync(function() {
            var latestCount = targetList.get_itemCount();
            var currentDisplayText = countDisplay.textContent.trim();
            // 对比并更新计数显示
            if (!currentDisplayText.startsWith(latestCount.toString())) {
                countDisplay.textContent = latestCount + " 项";
            }
        }, function(sender, args) {
            console.log("获取列表计数失败: " + args.get_message());
        });
    }, 5000); // 每5秒检查一次,可根据需求调整间隔
});

记得替换脚本中的{关联列表的GUID}和WebPartWPQx为实际值。

方案二:开启Web部件自动刷新属性

部分情况下,你可以直接通过Web部件设置开启自动刷新:

  • 编辑汇总列表Web部件,切换到高级选项卡;
  • 查找是否有自动刷新间隔设置(部分版本可能隐藏,需通过SharePoint Designer或PowerShell修改);
  • 设置合适的刷新间隔(比如30秒),让部件定期拉取最新数据,不受折叠状态影响。

方案三:用PowerShell强制配置自动刷新

如果前端找不到自动刷新选项,可以通过PowerShell批量设置:

Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

$siteUrl = "http://你的站点URL"
$pageUrl = "/sites/你的站点/页面名称.aspx"
$webPartTitle = "汇总列表Web部件的标题"

$web = Get-SPWeb $siteUrl
$wpManager = $web.GetLimitedWebPartManager($pageUrl, [System.Web.UI.WebControls.WebParts.PersonalizationScope]::Shared)

foreach ($wp in $wpManager.WebParts) {
    if ($wp.Title -eq $webPartTitle) {
        $wp.RefreshInterval = 30 # 刷新间隔,单位秒
        $wpManager.SaveChanges($wp)
        Write-Host "已成功设置Web部件自动刷新间隔为30秒"
        break
    }
}

$web.Dispose()

额外排查提示

  • 确保工作流执行完成后,调用了列表的Update()方法,保证数据已提交到SharePoint服务器;
  • 测试时可以手动触发工作流,观察折叠状态下的计数变化,逐步验证脚本或设置是否生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:04:35