【问题标题】:Retrieve Control/select value with XPath in SharePoint在 SharePoint 中使用 XPath 检索控制/选择值
【发布时间】:2010-10-12 16:40:54
【问题描述】:

表单是从列表中填充的,我需要对其进行过滤。我有一个带有日期列的表,并且只想显示所需月份的行。为此,我使用了 XPath 过滤:

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

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

<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 检索 select 的选定值?

尝试使用 XPath 来实现这一点,因为 SharePoint 的“常规”过滤只允许按完整日期进行过滤,而不是分别按日、月或年进行过滤。

【问题讨论】:

  • 好问题,+1。请参阅我的答案以获得完整的解决方案。

标签: sharepoint list xpath drop-down-menu filter


【解决方案1】:

如果您有此 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

【讨论】:

  • 对不起,如果我没有清楚地解释自己,但我想获取您发布的此类列表的值,而不是设置它。我需要过滤 SharePoint 列表数据。
  • @Indrek:抱歉,XPath 表达式正在为您获取值:“July”代表 7。你能解释一下吗?
  • 我需要在 Xpath 过滤器中获取所选列表的值(我使用 select 来控制显示哪些数据)。
  • 那么,您需要为 7 月获得 7 个吗?反过来?
  • 是(对于最短评论长度,再次“是”)。
【解决方案2】:

啊,太好了,我的长答案和连接错误!这次更短:

我只是想按月过滤表单/表格行。为此,我创建了一个 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,我首先创建了一个参数。当为表单选择 Filter 并在 Value 列下选择 Create new parameter... 时,可以轻松创建参数。刚刚从 Controls:DropDownList1 创建了一个参数 MyParameter。现在这个参数可以在 XPath 过滤中使用:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多