我有一个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 ...
现在,因为用户通常对“当前”月份最感兴趣,所以我希望他们能够应用过滤器,并选择(比如说)09年3月。但是,如果他们使用内置的在过滤中,它还会过滤掉文件夹,并且无法再浏览文件夹层次结构。这不是好事 - 我希望他们能够在文件夹之间移动,过滤器完好无损,这样他们就不需要继续关闭它了。
我想我可以使用自定义视图(选择type = folder或month = [month]),并且可以使用自定义视图。但是,我只能让它用于修复月,而我需要用户能够选择月份 - 也许是通过页面上的下拉控件(我不是想要创建60个视图5年的月份,我也不想每个月创建一个新视图。
我认为可以在代码中创建视图(而不是通过UI),但我无法弄清楚如何在CAML查询中获取动态值(用户特定的设置)
任何指针都非常感激!顺便说一下,我 意识到文件夹不好的教条,而且一切都应该只是一个列表。但是,考虑到替代方案,我仍然赞成使用文件夹 - 如果我能解决这个问题。
提前致谢。
答案 0 :(得分:1)
您是否可以创建一个继承自包含Month列的Folder的内容类型?然后,将此正常文件夹内容类型替换为此列表中的新文件夹内容类型。适当地设置月份,现在您的过滤器也将包含该文件夹。
答案 1 :(得分:0)
您可能想尝试使用DataViewWebpart filtered by a form webpart来执行此操作。 管理文件夹的显示然后单击文件夹项目将是一个问题。这是我猜不使用文件夹的原因之一。
答案 2 :(得分:0)
我目前遇到完全相同的问题,而不是简单的日期,我需要根据文件夹名称进行过滤,然后在页面上显示这些文件夹。一旦他们点击文件夹,他们就可以查看该文件夹的内容。
我还没有找到一个好的解决方案,但是对于你的,你应该能够使用contentQueryWebpart简单地创建一个自定义的CAML查询。
这样的事情: Further Customize CQWP
但你可以在文件夹的日期/时间进行,而不是别的。
您的查询类似于:
<![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>]]>
我还会添加您要查找的文件夹的名称,以确保不会返回任何其他内容。
希望这会有所帮助。如果你找到另一个解决方案,请回发。
答案 3 :(得分:0)
我想我找到了你的解决方案 - DataWebPart实际上是帮助我的......
使用它也是一个巨大的大开眼界: ASP.NET Controls Filter Data View
总结一下,您只需使用月份组合填充下拉列表,通过设计器视图在页面上添加共享文档库,使用“过滤器”连接到ASP.NET下拉列表并使用过滤器在一个月。 您也可以使用XSL将其默认为某个日期,现在它都在代码视图中:)
答案 4 :(得分:0)
@Gary DATA视图的控件过滤器(我的第二个答案)确实保留了文件夹层次结构。
如果需要,您可以将其放入子文件夹,但在您的情况下,您只对显示一个特定文件夹感兴趣吗?
你正在做的是使用SP设计师来做这件事,我找不到通过常规网站部分做到这一点的方法。
<Where>
<Eq>
<FieldRef Name='Month'/>
<Value Type='Number'><Month/></Value>
</Eq>
</Where>
或 html编码:
< ;Where> ;< ;Eq> ;< ;FieldRef Name='Month'/> ;< ;Value Type='Number'> ;< ;Month/> ;< ;/Value> ;< ;/Eq> ;< ;/Where> ;
关键是,您只在数据视图的根级别创建过滤器。一旦他们点击文件夹,他们就会被扔进文档库并可以查看文件夹中的所有内容。
希望这有帮助!
ps:在html编码时我必须在';'之前添加空格所以你可以看到代码。
答案 5 :(得分:0)
我在过滤和SPGridView方面做了大量工作。也许你可以在我的博客上看到这个post。 正如我所说,不知道它是否会对你有所帮助,但看看。