SharePoint:筛选包含文件夹的列表

SharePoint:筛选包含文件夹的列表,sharepoint,list,filter,view,directory,Sharepoint,List,Filter,View,Directory,我有一个SharePoint文档库,它有一个文件夹结构,用于组织文档(也用于通过对文件夹的权限控制访问) 图书馆中的文档每月更新一次,我们将每月的文档版本存储在同一文件夹中;有一个用于筛选的“月”列,其中包含诸如Jan 09、Feb 09等值。它看起来如下所示: Title Month ----- ----- SubFolder 1 SubFolder 2 [] Interesting Facts

我有一个SharePoint文档库,它有一个文件夹结构,用于组织文档(也用于通过对文件夹的权限控制访问)

图书馆中的文档每月更新一次,我们将每月的文档版本存储在同一文件夹中;有一个用于筛选的“月”列,其中包含诸如Jan 09、Feb 09等值。它看起来如下所示:

Title Month ----- ----- SubFolder 1 SubFolder 2 [] Interesting Facts Jan 09 [] Interesting Facts Feb 09 [] Interesting Facts Mar 09 [] Fascinating Numbers Jan 09 [] Fascinating Numbers Feb 09 ... 产权月 ----- ----- 子文件夹1 子文件夹2 []有趣的事实2009年1月 []有趣的事实2009年2月 []有趣的事实2009年3月 []令人着迷的数字2009年1月 []令人着迷的数字2009年2月 ... 现在,由于用户通常对“当前”月份最感兴趣,我希望他们能够应用过滤器,并选择(比如)2009年3月。但是,如果他们使用内置的筛选功能执行此操作,它也会筛选出文件夹,并且他们无法再浏览文件夹层次结构。这是不好的-我希望他们能够在过滤器完好无损的情况下在文件夹之间移动,这样他们就不需要不断地关闭和打开它

我想我可能能够使用自定义视图(选择type=folder或month=[month]),并且在一定程度上可以使用。然而,我只能让它在一个固定的月份工作,而我需要用户能够选择月份-可能通过页面上的下拉控件(我不想为5年的月份创建60个视图,也不想每个月创建一个新视图)

我认为在代码中创建视图(而不是通过UI)是可能的,但我还没有弄清楚如何在CAML查询中获得动态值(用户特定的设置)

感谢您的指点!顺便说一句,我知道文件夹是坏的,所有东西都应该是一个列表。然而,在考虑了其他选择之后,我仍然倾向于使用文件夹——如果我能解决这个问题的话


提前感谢。

您可能想尝试使用一个。
管理文件夹的显示以及单击时的文件夹项目将是一个问题。这就是我不使用文件夹的原因之一。

我目前遇到了完全相同的问题,我需要根据文件夹名称进行筛选,然后在页面上显示这些文件夹,而不是简单的日期。单击文件夹后,他们将能够查看该文件夹的内容

我还没有找到一个很好的解决方案,但是对于您的,您应该能够简单地使用contentQueryWebpart创建一个自定义CAML查询

大概是这样的:

但是,您可以在文件夹的日期/时间执行此操作,而不执行其他操作

您的查询类似于:

 <![CDATA[
    <Where>
     <Gt>
       <FieldRef Name="Created" Nullable="True" Type="DateTime"/>
       <Value Type="DateTime"><Today /></Value>
     </Gt>
   </Where>
   <OrderBy>
       <FieldRef Name="Created" Nullable="True" Type="DateTime"Ascending="FALSE"/>
   </OrderBy>]]>

]]>
我还要添加您要查找的文件夹的名称,以确保不会返回任何其他内容


希望这有帮助。如果您找到其他解决方案,请发回。

我想我找到了您的解决方案-DataWebPart实际上帮助了我

使用它也让人大开眼界:

总而言之,您只需使用“月-年”组合填充下拉列表,通过designer视图在页面上添加共享文档库,使用ASP.NET下拉列表的“过滤器”连接,并在每个月设置一个过滤器。 您还可以使用XSL将其默认为某个日期,现在都在代码视图中:)

@Gary 数据视图的控件过滤器(我的第二个答案)实际上保留了文件夹层次结构

如果需要,您可以将其放入子文件夹中,但在您的情况下,您只对显示一个特定文件夹感兴趣,对吗

您正在使用的是SP designer,我找不到通过常规Web部件实现的方法

  • 在页面的“设计”视图中拖放共享文档库
  • 单击公共任务箭头(>)并自定义要显示的列
  • 仍然在公共任务中,应用所选的筛选器。这里要做的是在月列上应用过滤器,使月列等于当前月/年,对吗? 过滤器只会给你一个选择来输入一些东西,输入当前月份,比如说2009年5月。然后切换到“代码”视图
  • 查找共享文档库,并更具体地查找以下内容: <;其中>;。。。。这就是我之前提到的CAML查询。您可以对整个内容进行HTML解码,这样它更具可读性。 但本质上,过滤器是一个简单的CAML查询。 您希望修改该查询,以便您的月/年组合是当前月/年的组合。 CAML有一个名为的功能,它以以下格式返回月份:mm/yyyy(您可能需要更改列的格式或创建一个新的格式,以方便自己)-您的CAML查询应该是这样的:
  • 
    
    或 html编码:

    
    <;其中>&书信电报;Eq>&书信电报;FieldRef Name='Month'/>&书信电报;值类型='Number'>&书信电报;月份/></价值></Eq></其中>;
    

    关键在于,您只在根级别的数据视图上创建一个过滤器。一旦他们点击文件夹,他们就会被扔进文档库,可以查看文件夹中的所有内容

    希望这有帮助


    ps:在html编码中,我必须在“;”之前添加空格因此,您可以看到代码。

    我在过滤和SPGridView方面做了大量工作。也许你能从我的博客上了解到一些东西。
    正如我所说,我不知道它是否能帮助您,但请看一看。

    您能创建一个从包含月份列的文件夹继承的内容类型吗?然后,用此列表中的新文件夹内容类型替换普通文件夹内容类型。适当地设置月份,n
    
    <Where>
     <Eq>
       <FieldRef Name='Month'/>
       <Value Type='Number'><Month/></Value>
     </Eq>
    </Where>