【问题标题】:How could I modify sharepoint 2013 list column title?如何修改 sharepoint 2013 列表列标题?
【发布时间】:2015-04-08 18:22:51
【问题描述】:

我希望同一列在不同的视图中显示不同的标题,只有一个列表。 所以我在 view.aspx 中附加了一个 jquery 脚本。

<asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server">
<script type="text/javascript" src="/_layouts/15/Library/js/jquery-1.9.1.js">      </script>
​<script type="text/javascript">

$(document).ready(function(){
    $('[id^=diidSort][id$=company]').text('com');
  });
</script>

它有效,但是当我单击列升序或降序时,然后刷新页面。列 标题恢复为原始文本。我该如何解决?

【问题讨论】:

标签: sharepoint-2013


【解决方案1】:

由于是 SharePoint 2013 环境,建议采用以下方法:

  • 创建渲染模板以渲染自定义列标题 在列表视图中
  • 在视图页面中更新列表视图 web 部件

模板文件

SharePoint 2013 为列表视图引入了client side rendering framework (CSR),它允许使用 HTML/JavaScript 定义 SharePoint 列表视图的呈现逻辑。

以下示例演示如何在列表视图中呈现Title 列的自定义标题:

(function () {


    function preTaskFormRenderer(renderCtx) {
       modifyHeaderData(renderCtx);       
    }


    function modifyHeaderData(renderCtx)
    {
      var viewTitle = renderCtx.viewTitle;
      var linkTitleField = renderCtx.ListSchema.Field[1];
      linkTitleField.DisplayName = viewTitle + ':' + linkTitleField.DisplayName;
    }

    function registerRenderer()
    {
      var ctxForm = {};
      ctxForm.Templates = {};
      ctxForm.OnPreRender = preTaskFormRenderer;
      SPClientTemplates.TemplateManager.RegisterTemplateOverrides(ctxForm);
    } 
    ExecuteOrDelayUntilScriptLoaded(registerRenderer, 'clienttemplates.js');

})();

如何应用更改

  • 上传指定的脚本(命名为TaskForm.js)到 SharePoint Site Assets
  • 在编辑模式下打开视图页面并转到列表视图 Web 部件属性
  • 指定位于Miscellaneous 组下的JS Link 属性: ~sitecollection/SiteAssets/TaskForm.js(见图1)
  • 如果需要,保存更改并为每个查看页面重复步骤 2-4

图 1. JS 链接属性

结果

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    • 2014-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多