为什么SharePoint 2013中的CAR自定义后项目未显示在Web部件中?

时间:2014-08-02 17:21:12

标签: javascript sharepoint sharepoint-2013

我尝试使用CSR Javascript文件自定义SharePoint 2013中的Web部件,但是在视图中的所有更改之后,我的文本[object Object]的项目通常是List Items。什么是问题?

我的JS代码:

(function () {
/*
 * Initialize the variable that store the overrides objects.
 */
var overrideCtx = {};
overrideCtx.Templates = {};

 // Assign functions or plain html strings to the templateset objects:


//  This template is assigned to the CustomItem function.
overrideCtx.Templates.Group = CustomGroup;
overrideCtx.Templates.Item = CustomItem;

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

//       Register the template overrides.

SPClientTemplates.TemplateManager.RegisterTemplateOverrides(overrideCtx);

})();

 /*
 * This function builds the output for the item template.
 * Uses the Context object to access announcement data.
 */
function CustomItem(ctx) {
// Build a listitem entry for every announcement in the list.
var ret = '<div style="width: 150px; border: 1px solid #333; padding: 5px;"> <div> <div style="float: left; display: inline-block;">' + ctx.CurrentItem.Title + 
'</div> <div style="float: right; display: inline-block;">' + ctx.CurrentItem.TaskDueDate + '</div> </div> <div style="word-wrap: break-word;">' + ctx.CurrentItem.CategoryDescription + '</div> </div>';
return ret;
};

function CustomGroup(ctx, group, groupId, listItem, listSchema, level, expand) {
var html = '<div style="font-weight:bold; display: inline-block;">' + listItem[group] + ' ::'  + '<div><ul>'+listItem+ '</ul></div>' + '</div>';
return html;
};

1 个答案:

答案 0 :(得分:2)

您的一些变量包含对象而不是字符串。这是找出哪些内容的方法。

在设置和返回&#34; ret&#34;之间添加一些输出跟踪到您的javascript。变量。例如,在CustomItem中,您可以添加:

console.log("Title, Due Date, and Category are:);
console.log(ctx.CurrentItem.Title);
console.log(ctx.CurrentItem.TaskDueDate);
console.log(ctx.CurrentItem.CategoryDescription);

打开您的页面并使用浏览器显示控制台。 (Chrome console instructions

在控制台中,您会看到每个处理项目的四行输出。其中一个可能会说[Object]而不是您正在寻找的字符串值。 单击[对象]左侧的三角形图标以展开对象的属性。

现在您可以看到对象结构,调整您的&#34; ret&#34;变量来获取字符串值。例如,它可能是ctx.CurrentItem.CategoryDe​​scription.Title而不仅仅是ctx.CurrentItem.CategoryDe​​scription