Howto: Use a form web part to filter or show all values in a data view web part
- On a new page insert a few of the Announcements list
- Insert a Form Web Part
- Change the input type of the Form to be a drop-down field and add some values:
- All
- 1
- 2
- Place the cursor into the Data View you created in Step 1 and click on Table..Select > Row
- Click on Data..Conditional Formatting
- Click on Create
- Click on “Show content...“
- Field Name == ID
- Comparison == Equals
- Value == [Input Paramter]
- Click OK
- Right click the Form Web Part > Web Part Connections
- Provide Data Values to...
- Web Part on this page...
- Modify view using Parameters from...
- D1 == Input Parameter
- Finish the wizard
- Now switch to code view
- Add some code so that if the Input Parameter says “All“ you show all values:
currently, the dvt_1.body template looks like this:
<xsl:template name="dvt_1.body">
<xsl:param name="Rows"/>
<xsl:param name="FirstRow"/>
<xsl:param name="LastRow"/>
<xsl:for-each select="$Rows">
<xsl:variable name="KeepItemsTogether" select="false()"/>
<xsl:variable name="HideGroupDetail" select="false()"/>
<xsl:variable name="GroupStyle" select="'auto'"/>
<xsl:if test="(position() >= $FirstRow and position() <= $LastRow) or $KeepItemsTogether">
<xsl:if test="not($HideGroupDetail)" ddwrt:cf_ignore="1">
<xsl:if test="@ID = $filterParam">
<tr style="display:{$GroupStyle}">
<td class="ms-vb"><xsl:value-of select="@Title"/></td>
<td class="ms-vb"><xsl:value-of select="@Editor"/></td>
<td class="ms-vb"><xsl:value-of select="ddwrt:FormatDate(string(@Modified), 1033, 5)"/></td>
</tr>
</xsl:if>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:template>
You need to add the code in bright red:
<xsl:template name="dvt_1.body">
<xsl:param name="Rows"/>
<xsl:param name="FirstRow"/>
<xsl:param name="LastRow"/>
<xsl:for-each select="$Rows">
<xsl:variable name="KeepItemsTogether" select="false()"/>
<xsl:variable name="HideGroupDetail" select="false()"/>
<xsl:variable name="GroupStyle" select="'auto'"/>
<xsl:if test="(position() >= $FirstRow and position() <= $LastRow) or $KeepItemsTogether">
<xsl:if test="not($HideGroupDetail)" ddwrt:cf_ignore="1">
<xsl:if test="@ID = $filterParam or $filterParam = 'All'">
<tr style="display:{$GroupStyle}">
<td class="ms-vb"><xsl:value-of select="@Title"/></td>
<td class="ms-vb"><xsl:value-of select="@Editor"/></td>
<td class="ms-vb"><xsl:value-of select="ddwrt:FormatDate(string(@Modified), 1033, 5)"/></td>
</tr>
</xsl:if>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:template>
20. Save the page and check it out in the browser.