Sharepoint 2010分类法未正确过滤

时间:2011-02-10 18:17:56

标签: sharepoint-2010

我在Sharepoint 2010中有一个奇怪的分类过滤,但我可以在所有3台服务器上复制它。

以下是该场景的演绎方式:

  1. 拥有一个包含许多子节点(约4500个)的完全填充的termSet。
  2. 添加1个自定义列表,包含2个字段(标题和托管元数据字段,此链接到termSet) - 所有这些都是使用GUI完成的。
  3. 手动添加列表项(或一对),并选择一个术语来填充元数据字段(树结构中的深度约为4个节点)
  4. 根据此术语测试列表中的过滤效果 - 就像魅力一样。
  5. 现在,此时我运行导入作业,将项目添加到另一个列表中。第二个列表还有一个指向termSet的托管元数据字段。

    1. 添加1000项,没问题。像魅力一样工作
    2. 再加1000,没问题。
    3. 在2000左右的某个地方和4500个项目出了问题,因为在运行结束后,我现在离开了以下场景:
    4. 列表1过滤不起作用。列表2过滤,绝对不起作用。

      究竟发生了什么。我选择一个顶级术语,它应该包括所有子项。在大量插入使用术语集中的术语的列表项之前,它完美地完成了这一操作。在插入之后,当我选择顶级术语时,我得到一个空的设置,并且没有包含后代的按钮。

      我正在调查这个隐藏的列表,这与我注意到的过滤有很大关系。过滤主要检查这一点(尚不确定如何/为什么)。

      其他人有这个问题吗?关于此的唯一文档来源是Microsoft Sharepoint Evangelical Blogs(Marketing),没有详细解释为什么这不起作用。

      请协助。

1 个答案:

答案 0 :(得分:5)

规则1:在处理Sharepoint时,永远不要相信它能够工作。

if (fRecursive && (numArray.Length > 300))
    {
        int[] numArray2 = numArray;
        object[] data = new object[] { termSetId.ToString(), termId.ToString(), numArray2.Length.ToString(CultureInfo.InvariantCulture) };
        ULS.SendTraceTag(0x66367766, ULSCat.msoulscat_DLC_DM, ULSTraceLevel.Medium, "Disable recursive term clause: Too many descendent IDs for term. Termset[{0}]Term[{1}] Descendent ID count[{2}]", data);
        numArray = TaxonomyField.GetWssIdsOfTerm(SPContext.Current.Site, termStoreId, termSetId, termId, false, 500);
        MetadataNavigationContext current = MetadataNavigationContext.Current;
        if (current != null)
        {
            current.ForceTreeDescendentsOff();
        }
    }
(numArray.Length > 300)

从Sharepoint.Taxonomy反映,请注意current.ForceTreeDescendentsOff();

因此,如果您可能需要从Taxonomy过滤器返回超过300条记录,则似乎无法执行此操作。非常适合企业解决方案。