SharePoint 2013列表搜索框和客户端站点呈现(JSLink)

时间:2014-02-18 10:11:35

标签: javascript sharepoint sharepoint-2013 csr

我正在尝试实施FAQ手风琴SharePoint列表。 我设法让手风琴在使用JSLink时工作。 可悲的是,搜索工作不正常。 我在JSLink js中使用了以下代码:

(function () {
/*
 * Initialize the variable that store the overrides objects.
 */
var overrideCtx = {};
overrideCtx.Templates = {
    Header: function(ctx) {
            var headerHtml =  RenderTableHeader(ctx);
            headerHtml += "</table>";
            headerHtml += "<div id='accordion'>";
            return headerHtml;
        },
    Footer: function (ctx) {
        return "</div>";
                        },
    Item: function(ctx) {
        // Build a listitem entry for every announcement in the list.
        var ret = "<h3 class='OutlookFAQ'>"+ctx.CurrentItem.Title+"</h3><div style='display:none;' class='OutlookFAQContent'><p>"+ctx.CurrentItem.Answer+"</p></div>";
        return ret;
    }

};


overrideCtx.BaseViewID = 1;
overrideCtx.ListTemplateType = 100;



overrideCtx.OnPostRender = [];
overrideCtx.OnPostRender.push(function()
{
    $('#accordion h3').click(function(e) {
            $(e.target).next('div').siblings('div').slideUp();
            $(e.target).next('div').slideToggle();
    });
});

SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideCtx);

})();

我很伤心,手风琴正在工作,搜索框正在显示。如果我尝试提交搜索,则弹出sp.ui.listsearchbox.js中的JS错误“TypeError:this。$ T_3 is null”。 有什么想法吗?

此致

1 个答案:

答案 0 :(得分:1)

由于缺少Search Status元素而导致发生此错误,该元素是搜索控件的一部分并在Footer模板中呈现

搜索状态

搜索状态元素用于显示有关搜索结果的提示。 RenderSearchStatus函数用于呈现搜索状态

enter image description here

解决方案

替换页脚渲染模板

Footer: function (ctx) {
    return "</div>";   
}

Footer: function (ctx) {
   var footerHtml = "</div>";
   footerHtml += RenderFooterTemplate(ctx);  //render standard footer (pager, search status)
   return footerHtml;   
}

博客文章Customize the rendering of a List View in Sharepoint 2013: Displaying List Items in Accordion包含呈现为Accordion的列表视图的工作示例。