0

我需要根据选定的下拉值过滤我的列表。我为此创建了一个 DVWP 并将其转换为下拉列表。现在我正在关注这篇文章以在选择下拉值时触发事件,但我只是不知道在哪里更改代码。我正在根据年份过滤列表。我有一个年份列表,其中存储年份值并在选择下拉列表时相应地对其进行过滤。我已经这样修改了它:

<xsl:otherwise>
  <select name="ID" size="1" onchange="document.location.href='pageName.aspx?year=' + this.options[selectedIndex.value])">
    <option selected="true" value="0">Choose One...</option>
    <xsl:call-template name="dvt_1.body">
      <xsl:with-param name="Rows" select="$Rows" />
    </xsl:call-template>
  </select>

我不知道 xslt 并且当我更改下拉值时这不会触发任何事件。请帮我解决一下这个。

更新:我得到的 HTML:

<td valign="top">
  <div WebPartID="9e0da2fd-21ea-417f-863d-6551d16e72a1" HasPers="false" id="WebPartWPQ3" width="100%" class="noindex" allowDelete="false" style="" >
    <select name="ID" size="1" onchange="document.location.href='http://pageName.aspx?year=' + this.options[selectedIndex].value" xmlns:x="http://www.w3.org/2001/XMLSchema" xmlns:d="http://schemas.microsoft.com/sharepoint/dsp" xmlns:asp="http://schemas.microsoft.com/ASPNET/20" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer" xmlns:SharePoint="Microsoft.SharePoint.WebControls" xmlns:ddwrt2="urn:frontpage:internal">
      <option selected="" value="0">Choose One...</option>
      <option>2009</option>
      <option>2010</option>
      <option>2011</option>
      <option>2012</option>
      <option>2013</option>
    </select>
  </div>
</td>
4

1 回答 1

0

我有点怀疑这是一个 XSLT 问题。该教程中处理程序的脚本onchange似乎可以归结为:

document.location.href='pageName.aspx?year=' + this.options[selectedIndex].value

请注意,.value[]. 你能试试吗?当您更改下拉选择时,您的浏览器是否报告任何 JavaScript 错误?

现在,根据本教程,您可以通过指定名为FilterField1FilterValue1等的查询参数来过滤列表,所以您可以尝试以下操作:

document.location.href='pageName.aspx?FilterField1=ColumnName&amp;FilterValue1=' 
 + this.options[selectedIndex].value + '&amp;year=' + this.options[selectedIndex].value

在这里,您将使用列的实际名称替换“ColumnName”,如该教程中所述。你能试试这样的东西吗?

于 2013-01-16T14:02:00.573 回答