我正在尝试将Sharepoint任务列表与Outlook同步。当用户将任务列表连接到Outlook时,Outlook中可以看到所有用户的任务。而不是在Outlook中应用过滤,我可以在源本身提供过滤吗?我的应用程序有相当多的用户,要求所有用户自己应用过滤器并不好。
还有其他建议吗?
感谢。
答案 0 :(得分:3)
我问了同样的问题:Sync list with outlook only with items in current view.。在这种情况下,可以使用stssync协议来做任何你想做的事情。这需要很多努力(幸运的是有人已经写了implementation)
但是我最终使用了另一个解决方案 - 为Lists.asmx webservice实现一个包装器并重写outlook请求(通过使用自定义Global.asax文件)来使用这个新的Web服务而不是Lists.asmx,它只查询特定的视图在列表中。
if (ctx.Request.UserAgent.Contains("Microsoft Office Outlook") && path.ToLower().IndexOf("_vti_bin/lists.asmx") >= 0)
{
ctx.RewritePath("/_layouts/OutlookLists.asmx");
}
我不确定你会想要这样的解决方案。如果你这样做,你可能会问,我可能会发布网络服务的解决方案来源,但是我不再自己使用这个网络服务了。您可以将它用作草稿,而不是生产就绪代码。
该来源已发布在CodePlex。
我不知道为什么list id没有被视图id替换。我试图在脚本控制台(IE8 / 9的F12)
中运行该功能>> var menuItems = document.getElementsByTagName('ie:menuitem');
for (var i = 0; i < menuItems.length; i++) {
itm = menuItems(i);
if (itm.id.match('OfflineButton') != null) {
console.log('listName:' + ctx.listName.toLowerCase() + 'viewName:' + ctx.view.toLowerCase());
if (ctx != null && ctx.listName != null && ctx.view != null) {
console.log('Inside if block');
//Replace listId to viewId being used so outlook will query only items in current view.
//Must have custom web service in place to handle that request, because it iwll not work OOTB.
console.log("Before: " + itm.onMenuClick);
itm.onMenuClick = itm.onMenuClick.replace(ctx.listName.toLowerCase(), ctx.view.toLowerCase());
console.log("After: " + itm.onMenuClick);
break;
}
}
}
LOG: listName:{fe89e809-7de4-4f43-9bc2-7e8ce6624ed0}viewName:{7364a843-c7f2-47d8-b4a3-5dc7381b6248}
LOG: Inside if block
LOG: Before: javaScript:ExportHailStorm('tasks','https:\u002f\u002fserver\u002fsapulces\u002fdarbu_parskata','{fe89e809-7de4-4f43-9bc2-7e8ce6624ed0}','Uz\u0146\u0113muma darbu p\u0101rskata sapulce','Uzdevumi','\u002fsapulces\u002fdarbu_parskata\u002fLists\u002fUzdevumi','','\u002fsapulces\u002fdarbu_parskata\u002fLists\u002fUzdevumi');
LOG: After: javaScript:ExportHailStorm('tasks','https:\u002f\u002fserver\u002fsapulces\u002fdarbu_parskata','{7364a843-c7f2-47d8-b4a3-5dc7381b6248}','Uz\u0146\u0113muma darbu p\u0101rskata sapulce','Uzdevumi','\u002fsapulces\u002fdarbu_parskata\u002fLists\u002fUzdevumi','','\u002fsapulces\u002fdarbu_parskata\u002fLists\u002fUzdevumi');
如您所见,函数参数(第三个)已替换为视图ID而不是列表ID。
在部署之前不要忘记删除console.log语句,因为如果IE没有Web开发人员工具,那么javascript就会崩溃。
答案 1 :(得分:0)
这些任务是从工作流程创建的吗?这是SharePoint 2007的已知问题。
http://blah.winsmarts.com/2007-4-SharePoint_2007__Fine_grained_permission_control.aspx
您可以尝试将读取/编辑权限设置为“仅限他们自己”,但我认为会打破工作中的批准/提醒
我认为问题已在SharePoint 2010中修复,我认为每个任务都会创建具有细粒度权限的任务。