1

我正在尝试将 Sharepoint 任务列表与 Outlook 同步。当用户将任务列表连接到 Outlook 时,所有用户的任务都在 Outlook 中可见。除了在 Outlook 中应用筛选,我可以在源本身提供筛选吗?我的应用程序有相当多的用户,要求所有用户自己应用过滤器并不好。

还有其他建议吗?

谢谢。

4

2 回答 2

3

我问了同样的问题:仅将当前视图中的项目与 Outlook 同步列表。. 在这种情况下,可以使用 stssync 协议来做任何你想做的事情。这需要付出很多努力(幸运的是有人已经写了一个实现

但是我最终使用了另一个解决方案 - 为 Lists.asmx webservice 实现一个包装器并重写 Outlook 请求(通过使用自定义 Global.asax 文件)以使用这个新的 webservice 而不是 Lists.asmx,它只查询列表中的特定视图.

if (ctx.Request.UserAgent.Contains("Microsoft Office Outlook") && path.ToLower().IndexOf("_vti_bin/lists.asmx") >= 0)
            {
                ctx.RewritePath("/_layouts/OutlookLists.asmx");
            }  

我不确定你是否想要这样的解决方案。如果你这样做了,你可能会问,我可能会发布网络服务的解决方案源,但是我自己不再使用这个网络服务了。您可以将其用作草稿,而不是生产就绪代码。

源代码已在CodePlex上发布。

关于脚本问题

我不知道为什么列表 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 会在那里崩溃。

于 2011-04-05T08:17:43.367 回答
0

这些任务是从工作流中创建的吗?这是 SharePoint 2007 的一个已知问题。

http://social.technet.microsoft.com/Forums/en/sharepointadmin/thread/64b3b124-085c-4d8e-8e85-8bd20736e0e7

http://blah.winsmarts.com/2007-4-SharePoint_2007__Fine_grained_permission_control.aspx

您可以尝试将读取/编辑权限设置为“仅他们自己的”,但我认为这会破坏批准/警报的工作

我相信这个问题在 SharePoint 2010 中得到了解决,我认为创建任务时每个任务都有细粒度的权限。

于 2011-04-05T03:25:41.240 回答