我需要根据所选的下拉值过滤我的列表。我为此创建了一个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>
我有点怀疑这是XSLT问题。该教程中onchange
处理程序的脚本似乎可以归结为:
document.location.href='pageName.aspx?year=' + this.options[selectedIndex].value
注意.value
在[]
之外。你能试一下吗?当您更改下拉选择时,您的浏览器是否报告任何JavaScript错误?
现在,根据本教程,您可以通过指定名为FilterField1
, FilterValue1
等的查询参数来过滤列表,因此您可以尝试这样做:
document.location.href='pageName.aspx?FilterField1=ColumnName&FilterValue1='
+ this.options[selectedIndex].value + '&year=' + this.options[selectedIndex].value
这里,您可以将"ColumnName"替换为列的实际名称,如该教程所示。你能试试这样的东西吗?