【问题标题】:Triggering postback to send query parameters from DVWP dropdown box触发回发以从 DVWP 下拉框中发送查询参数
【发布时间】:2012-12-30 20:43:54
【问题描述】:

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

<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 sharepoint dom-events sharepoint-designer dataviewwebpart


    【解决方案1】:

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

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

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

    现在,根据this tutorial,您可以通过指定名为FilterField1、FilterValue1 等的查询参数来过滤列表,那么您可以试试这样:

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

    您可以在此处将“ColumnName”替换为列的实际名称,如该教程中所述。可以试试这样的吗?

    【讨论】:

    • 感谢您的回复!该页面现在正在回复,但没有发生分组。而且,提供页面名称是否足够,还是我必须像我所做的那样提供服务器名称?不,浏览器没有给出任何错误消息。
    • 好的,接下来要验证的是您的浏览器地址栏是否显示了预期的 URL,并且您的 URL 末尾有 year=_expected value_。您是否按照博文中的说明将 year 添加为 DVWP 的查询字符串参数?您是否修改了 XSL 以使用该参数?
    • 是的,浏览器地址栏确实显示了正确的 url。而且我已经添加了年份作为参数,但我不知道如何使用该年份参数。
    • 好的,刚刚发现我必须显式传递参数,而不是在document.location.href 中手动输入年份。用onchange="" 做这件事是行不通的,所以我想我必须做一个 JS 函数。您能告诉我在 xslt 页面中在哪里编写 javascript 函数吗?我可以在任何地方或占位符内写吗?
    • 在我的回答中添加了一个建议。
    猜你喜欢
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 2014-10-20
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多