2010-07-07 82 views
1

我在显示数据表的页面上有一个数据视图Web部件。Sharepoint数据视图Web部件工具栏排序默认

我想允许用户选择要排序的列。我认为唯一的方法是进入数据视图属性,并通过排序来启用工具栏。这可以工作,并允许用户选择一个列使用下拉列表进行排序。缺省值为'none',并且当页面第一次加载时,没有应用排序(行通过它的ID显示,这非常随机)。

我希望默认排序是一个特定的列 - 即当页面首次打开时,我希望数据按'姓氏'列排序。我无法弄清楚如何使用工具栏排序实现这一点。

我已经尝试在获取数据的SQL语句中指定ORDER BY SURNAME - 但是这最终会覆盖工具栏排序,因此无论工具栏排序选择如何,排序总是按姓氏排序。

数据视图属性中有另一个'排序'选项,它允许您指定排序,但是这又覆盖了所有内容并呈现工具栏排序选项无用(选择其他内容无效)。

我在想肯定必须有一个解决这个简单的问题?

排序工具栏的生成代码如下。我试图通过更改为使下拉框中所选项目的姓氏 - 这使默认情况下在下拉列表中选择姓氏列,但实际上不应用排序。

任何想法?

<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">&apos; + this.options[this.selectedIndex].value + &apos;</xsl:variable> 
       <xsl:variable name="clvar2_dvt_sortfield">&apos; + this.options[this.selectedIndex].fieldtype + &apos;</xsl:variable> 
       <xsl:variable name="clvar3_dvt_sortfield">&apos; + this.options[this.selectedIndex].title + &apos;</xsl:variable> 
       <xsl:variable name="clvar4_dvt_sortfield">&apos; + this.options[this.selectedIndex].sorttype + &apos;</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> 

回答

2

James, 搜索标记为dvt_sortfield的参数绑定,然后手动输入:Default =“FIELDNAME”行。 这应该会诀窍。

ParameterBinding NAME =“dvt_sortfield”默认值=“ID”位置=“回传;连接”

如果您需要更改默认的排序也有一个排序参数调用dvt_sortdir,您可以在重新设置ParameterBinding标签。

+0

对我的作品,谢谢丹我走进了数据视图Web部件边栏上的“参数编辑器”,并修改有: 2010-11-30 12:12:40

0

如果您先选择SQL中的Surname列,会发生什么?

+0

抱歉,系统这似乎没有什么区别:( – 2010-08-03 07:19:54