データのテーブルを表示しているページにデータビューWebパーツがあります。
ユーザーが並べ替える列を選択できるようにしたい。これを行う唯一の方法は、データビューのプロパティに移動し、並べ替えでツールバーを有効にすることだと思います。これは機能し、ユーザーが列のドロップダウンリストを使用して並べ替える列を選択できるようにします。デフォルトは「none」であり、ページが最初にロードされるとき、ソートは適用されません(行はIDで表示されますが、これはほとんどランダムです)。
デフォルトの並べ替えを特定の列にします。つまり、ページを最初に開いたときに、データを「Surname」列で並べ替えます。ツールバーの並べ替えを使用してこれを実現する方法がわかりません。
データを取得するSQLステートメントでORDERBYSURNAMEを指定しようとしましたが、これによりツールバーの並べ替えが上書きされるため、ツールバーの並べ替えの選択に関係なく、並べ替えは常に名前で行われます。
データビューのプロパティには、並べ替えを指定できる別の「並べ替え」オプションがありますが、これもすべてを上書きし、ツールバーの並べ替えオプションを使用できなくします(他のものを選択しても効果はありません)。
私は確かにこの単純な問題の解決策があるに違いないと思っていますか?
ソートツールバー用に生成されたコードは以下のとおりです。ドロップダウンボックスで名前を選択したアイテムに変更してみました。これにより、デフォルトでドロップダウンで名前の列が選択されますが、並べ替えは実際には適用されません。
何か案は?
<table cellSpacing="0" cellPadding="2" border="0" class="ms-toolbar" style="margin-left: 3px; margin-right: 5px;">
<tr>
<td id="dvt_tb_sort" nowrap=""><table><tr><td nowrap="" class="ms-toolbar"><nobr>Sort by: <select>
<xsl:variable name="clvar1_dvt_sortfield">' + this.options[this.selectedIndex].value + '</xsl:variable>
<xsl:variable name="clvar2_dvt_sortfield">' + this.options[this.selectedIndex].fieldtype + '</xsl:variable>
<xsl:variable name="clvar3_dvt_sortfield">' + this.options[this.selectedIndex].title + '</xsl:variable>
<xsl:variable name="clvar4_dvt_sortfield">' + this.options[this.selectedIndex].sorttype + '</xsl:variable>
<xsl:attribute name="OnChange">javascript:<xsl:value-of select="ddwrt:GenFireServerEvent(concat('NotUTF8;dvt_sortfield={', $clvar1_dvt_sortfield, '};dvt_sortdir={', $dvt_sortdir, '};dvt_sorttype={', $clvar4_dvt_sortfield, '}'))" /></xsl:attribute>
<option value="">None</option>
<option value="Location">
<xsl:if test="$dvt_sortfield='Location'">
<xsl:attribute name="selected">yes</xsl:attribute>
</xsl:if>
Location</option>
<option value="Email">
<xsl:if test="$dvt_sortfield='Email'">
<xsl:attribute name="selected">yes</xsl:attribute>
</xsl:if>
Email</option>
<option value="Mobile">
<xsl:if test="$dvt_sortfield='Mobile'">
<xsl:attribute name="selected">yes</xsl:attribute>
</xsl:if>
Mobile</option>
<option value="Position">
<xsl:if test="$dvt_sortfield='Position'">
<xsl:attribute name="selected">yes</xsl:attribute>
</xsl:if>
Position</option>
<option value="Telephone">
<xsl:if test="$dvt_sortfield='Telephone' and not($dvt_sorttype='number')">
<xsl:attribute name="selected">yes</xsl:attribute>
</xsl:if>
Telephone</option>
<option value="Telephone" sorttype="number">
<xsl:if test="$dvt_sortfield='Telephone' and $dvt_sorttype='number'">
<xsl:attribute name="selected">yes</xsl:attribute>
</xsl:if>
Telephone(Number)</option>
<option value="Forename">
<xsl:if test="$dvt_sortfield='Forename' or $dvt_sortfield=''">
<xsl:attribute name="selected">yes</xsl:attribute>
</xsl:if>
Forename</option>
<option value="Surname">
<xsl:if test="$dvt_sortfield='Surname'">
<xsl:attribute name="selected">yes</xsl:attribute>
</xsl:if>
Surname</option>
</select><a>
<xsl:attribute name="href">
<xsl:choose>
<xsl:when test="$dvt_sortdir='descending'">javascript:<xsl:value-of select="ddwrt:GenFireServerEvent(concat('dvt_sortfield={', $dvt_sortfield, '};dvt_sortdir={ascending}'))" /></xsl:when>
<xsl:otherwise>javascript:<xsl:value-of select="ddwrt:GenFireServerEvent(concat('dvt_sortfield={', $dvt_sortfield, '};dvt_sortdir={descending}'))" /></xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:if test="$dvt_sortfield" ddwrt:cf_ignore="1"><img border="0">
<xsl:attribute name="src">
<xsl:choose>
<xsl:when test="$dvt_sortdir='descending'"><xsl:value-of select="ddwrt:FieldSortImageUrl('Asc')" /></xsl:when>
<xsl:otherwise><xsl:value-of select="ddwrt:FieldSortImageUrl('Desc')" /></xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:attribute name="alt">
<xsl:choose>
<xsl:when test="$dvt_sortdir='descending'">Descending</xsl:when>
<xsl:otherwise>Ascending</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</img></xsl:if>
</a></nobr></td></tr></table></td><td width="99%"></td>
</tr>
</table>