2010-10-11 53 views
0

表单从列表中填充,我需要将其过滤。我有一个包含日期列的表,并希望仅显示所需月份的行。为此,我使用XPath过滤:使用SharePoint中的XPath检索控制/选择值

[((ddwrt:FormatDateTime(string(@MyDateColumn) ,1061 ,'MM'))=02)] 

这给了我2月份的结果,一切正常。现在我想实现是使月选择了下拉列表:

<asp:DropDownList runat="server" id="DropDownList1"> 
     <asp:ListItem Selected="True" Value="01">January 
     </asp:ListItem> 
     <asp:ListItem Value="02">February</asp:ListItem> 
    </asp:DropDownList> 

下拉也可以是一个普通的HTML选择,如果它会帮助,没有什么区别在那里。但是,如何通过XPath检索选择的选定值?

试图用XPath来实现这一点,因为SharePoint的“常规”过滤只允许按日期进行过滤,而不能单独按日,月或年进行过滤。

+0

好问题,+1。查看我的答案获得完整的解决方案。 – 2010-10-11 13:06:55

回答

0

啊太好了,我的长答案和连接错误!这段时间越短:

我只是想按月过滤表格/表格行。为此,我创建了一个ASP.NET控件的DropDownList:

<asp:DropDownList runat="server" id="DropDownList1" AutoPostBack="True"> 
     <asp:ListItem Value="01">January</asp:ListItem> 
     <asp:ListItem Value="02">February</asp:ListItem> 
     <asp:ListItem Value="03">March</asp:ListItem> 

    </asp:DropDownList> 

我们通过日期列筛选我DataFormWebPart,我首先创建一个参数。选择筛选器时可以轻松创建参数表格和列选择创建新参数...。刚刚从Controls:DropDownList1创建了一个参数MyParameter。现在这个参数可用于XPath过滤:

[((ddwrt:FormatDateTime(string(@MyDateColumn) ,1061 ,'MM'))=$MyParameter)] 
0

如果你有这样的XML文档(在这个问题的ASP文本没有良好的XML):

<select> 
    <option selected="selected" value="1">January</option> 
    <option value="2">February</option> 
    <option value="3">March</option> 
    <option value="4">April</option> 
    <option value="5">May</option> 
    <option value="6">June</option> 
    <option value="7">July</option> 
    <option value="8">August</option> 
    <option value="9">September</option> 
    <option value="10">October</option> 
    <option value="11">November</option> 
    <option value="12">December</option> 
</select> 

和选择$m,那么这个XPath表达式

/*/*[@value=$m]/text() 

选择对应于$m的想要的文本节点

上面的XPath表达式如下:

选择任何元素,其value属性等于$m的价值,这是该文件的顶级元素的孩子的孩子的所有文本节点。

例如:

/*/*[@value=7]/text() 

选择文本节点

"July"

/*/*[.=$v]/@value 

例如:

/*/*[.='July']/@value 

选择value属性,等于7

+0

对不起,如果我没有清楚地解释我自己,但我想要得到你发布的这个列表的价值,而不是设置它。我需要过滤SharePoint列表数据。 – Indrek 2010-10-11 13:42:26

+0

@Indrek:抱歉,XPath表达式*会让你获得值:“July”为7。你能解释一下吗? – 2010-10-11 13:44:20

+0

我需要在Xpath筛选器中获取选定列表的值(我使用select来控制显示哪些数据)。 – Indrek 2010-10-11 13:46:23