SharePoint列表自定义渲染异常咨询:添加图标后列表无法正常访问
嘿,我瞅了下你的代码,问题核心是你直接替换了整个列表项的渲染模板——原本SharePoint的列表项自带点击跳转、字段布局这些交互和结构,你现在把整个Item模板换成了仅包含标题和图标的字符串,相当于把活的列表变成了死的静态文本,自然没法正常访问啦!
下面是具体的修改方案:
关键修改点
- 把模板目标从「整个列表项(Item)」改成「仅Title字段」:这样只会自定义标题的显示,保留列表项原有的结构和交互
- 调整渲染函数,只处理Title字段的输出,不用管整个Item的渲染
- 移除多余的
RenderItemTemplate调用(原代码里这个位置也不对,没起到作用)
修改后的完整代码
<script> (function () { var excludeRows = [0,2,3]; // 仅自定义Title字段的渲染 function renderTitleField(renderCtx) { // 跳过指定行的标题修改 if(excludeRows.indexOf(renderCtx.CurrentItemIdx) > -1) { // 返回默认的Title渲染结果 return renderCtx.CurrentItem.Title; } else { // 给标题追加图标,加个间距优化视觉 return renderCtx.CurrentItem.Title + "<img src='https://example.com/sites/ud07/HRM/Plaatjes/image.png' style='margin-left:8px;' alt='标识图标'/>"; } } function registerListRenderer() { var context = {}; context.Templates = {}; // 针对Title字段设置自定义模板 context.Templates.Fields = { 'Title': { 'View': renderTitleField } }; SPClientTemplates.TemplateManager.RegisterTemplateOverrides(context); } ExecuteOrDelayUntilScriptLoaded(registerListRenderer, 'clienttemplates.js'); })(); </script>
额外优化小细节
- 给图标加了
margin-left样式,让它和标题之间留点间距,看起来更舒服 - 补充了
alt属性,万一图标加载失败也能有文字提示,提升可用性
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

