SharePoint 2013服务器列表应用程序站点列显示行号而非名称的问题求助
针对你遇到的服务器列表里“应用程序”列显示行号(ID)而非应用名称的情况,我整理了几个适合SharePoint 2013且无需升级的解决方案,按操作复杂度从低到高排列:
方案一:直接修改视图的显示字段
这是最快捷的方法,优先尝试:
- 打开你的“服务器”列表,点击顶部菜单栏的列表选项卡,选择修改视图
- 在“列”配置区域,找到“应用程序”相关的选项——如果这是个查找列,通常会有两个选项:比如「应用程序」(对应显示名称)和「应用程序:ID」(对应行号)
- 取消勾选「应用程序:ID」,勾选「应用程序」,然后滚动到页面底部保存视图即可
如果找不到「应用程序」这个显示名称选项,说明当初创建查找列时没启用显示值的设置,那就得用方案二调整列配置。
方案二:修改查找列的配置
如果视图里没有名称选项,需要先调整查找列的设置:
- 进入“服务器”列表的列表设置页面,找到“应用程序”这个站点列(如果是站点级别的列,就去站点设置里找网站列)
- 点击列名称进入编辑页面,在「查找列设置」部分,勾选添加列以显示查找值,然后从下拉菜单里选择你要显示的应用名称字段(比如「应用名称」或者「Title」)
- 保存列设置后,回到列表的视图修改页面,就能看到新的显示名称列了,把它添加到视图里,移除原来的ID列即可
方案三:用JSLink自定义渲染(适合权限受限或特殊场景)
如果前两种方法因为权限或系统限制没法用,可以用JSLink来强制替换显示内容:
- 准备以下自定义JavaScript代码(记得替换代码里的内部名称为你实际的字段名称):
(function () { var overrideCtx = {}; overrideCtx.Templates = {}; // 替换成你的应用程序列的内部名称(可通过列表设置里的列链接URL获取) var lookupColumnInternalName = "Application_x0020_Name"; // 替换成存储应用程序的列表名称和要显示的字段名称 var appListTitle = "应用程序"; var appNameFieldInternalName = "Title"; overrideCtx.Templates.Fields = { [lookupColumnInternalName]: { 'View': function (ctx) { var lookupId = ctx.CurrentItem[lookupColumnInternalName]; var displaySpanId = ctx.CurrentItem.ID + "_" + lookupColumnInternalName; // 异步获取应用程序名称并替换显示内容 var clientContext = new SP.ClientContext(); var appList = clientContext.get_web().get_lists().getByTitle(appListTitle); var appItem = appList.getItemById(lookupId); clientContext.load(appItem); clientContext.executeQueryAsync( function () { var appName = appItem.get_item(appNameFieldInternalName); document.getElementById(displaySpanId).textContent = appName; }, function (sender, args) { console.error("加载应用名称失败:" + args.get_message()); } ); return '<span id="' + displaySpanId + '">' + lookupId + '</span>'; } } }; SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideCtx); })();
- 把这段代码保存为
.js文件,上传到SharePoint的站点资产库或者其他可访问的文档库 - 回到“服务器”列表的视图设置页面,找到JS链接字段,粘贴刚才上传的JS文件的完整URL(比如
/sites/yourSite/SiteAssets/RenderAppName.js) - 保存视图,刷新页面后就能看到显示应用名称了
内容的提问来源于stack exchange,提问作者Susan Cannon
相关产品推荐
相关产品推荐

