我怎样才能修改sh​​arepoint 2013列表标题?

时间:2014-05-14 04:20:30

标签: sharepoint-2013

我希望同一列在不同视图中显示不同的标题,只有一个列表。 所以我在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>

它可以工作,但当我点击列升序或降序然后刷新页面。专栏 标题恢复为原始文本。我怎么能解决它?

1 个答案:

答案 0 :(得分:4)

由于它是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部件属性
  • 指定JS Link组下的Miscellaneous媒体资源: ~sitecollection/SiteAssets/TaskForm.js(见图1)
  • 保存更改并在需要时为每个“查看”页面重复步骤2-4

enter image description here

图1. JS Link属性

结果

enter image description here