javascript - 为什么在 SharePoint 2013 中进行 CAR 自定义后,项目未显示在 Web 部件中?

标签 javascript sharepoint sharepoint-2013

我尝试使用 CSR Javascript 文件在 SharePoint 2013 中自定义 Web 部件,但在 View 发生所有更改之后,我拥有带有文本 [object Object] 的项目,而不是通常的列表项目。有什么问题吗?

我的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;
};

最佳答案

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

在设置和返回“ret”变量之间向您的 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] 而不是您要查找的字符串值。 单击[对象]左侧的三 Angular 形图标可展开对象的属性。

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

关于javascript - 为什么在 SharePoint 2013 中进行 CAR 自定义后,项目未显示在 Web 部件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25097582/

相关文章:

SharePoint - 跨网站集使用内容查询 Web 部件

javascript - 读取存储在 SharePoint 列表中的用户

sharepoint-2013 - 使用 CSOM 安装 Sharepoint 应用程序

sharepoint - 如何使用 XAmarin - IOS 的 REST API 调用替换基于 Sharepoint Forefront 的身份验证

Javascript 浮点减法

javascript - 使用 JQuery 或其他工具将 HTML 代码添加到 Image Map

javascript - 如何确定所有ajax请求都已解决?

c# - contenttypeorder 和 uniquecontenttypeorder 之间的区别

sharepoint - 确定输入的值是用户还是组 - 客户端对象模型

javascript在旋转的元素中找到相同的位置