Сортировка панели инструментов веб-части представления данных Sharepoint по умолчанию

У меня есть веб-часть просмотра данных на странице, которая отображает таблицу данных.

Я хочу, чтобы пользователи могли выбирать, по какому столбцу сортировать. Я думаю, что единственный способ сделать это — зайти в свойства просмотра данных и включить панель инструментов с сортировкой. Это работает и позволяет пользователю выбрать столбец для сортировки, используя раскрывающийся список столбцов. Значение по умолчанию — «нет», и при первой загрузке страницы сортировка не применяется (строки отображаются по их идентификатору, который в значительной степени случайный).

Я хочу, чтобы сортировка по умолчанию была определенным столбцом, т.е. при первом открытии страницы я хочу, чтобы данные сортировались по столбцу «Фамилия». Я не могу понять, как добиться этого с помощью сортировки панели инструментов.

Я попытался указать ORDER BY SURNAME в операторе SQL, который получает данные, однако это приводит к переопределению сортировки на панели инструментов, поэтому сортировка всегда выполняется по фамилии, независимо от выбора сортировки на панели инструментов.

В свойствах представления данных есть еще одна опция «сортировки», которая позволяет вам указать сортировку, однако, опять же, это переопределяет все и делает опцию сортировки на панели инструментов бесполезной (выбор чего-то еще не имеет никакого эффекта).

Я думаю, наверняка должно быть решение этой простой проблемы?

Сгенерированный код для панели инструментов сортировки приведен ниже. Я попытался сделать фамилию выбранным элементом в раскрывающемся списке, изменив на - это делает столбец фамилии выбранным в раскрывающемся списке по умолчанию, но сортировка фактически не применяется.

Любые идеи?

<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>

person James Allen    schedule 07.07.2010    source источник


Ответы (2)


Джеймс, найдите привязку параметра с меткой dvt_sortfield, затем вручную напишите в строке: Default="FIELDNAME". Это должно сработать.

ParameterBinding Name="dvt_sortfield" Default="ID" Location="Postback;Connection"

Если вам нужно изменить сортировку по умолчанию, есть также параметр сортировки, называемый dvt_sortdir, и вы можете установить его снова в теге ParameterBinding.

Дэн

person user451151    schedule 18.09.2010
comment
У меня работает, спасибо Дэн! Я зашел в «Редактор параметров» на боковой панели веб-части просмотра данных и изменил, чтобы иметь: ‹ParameterBinding Name=dvt_sortfield Default=Surname Location=Postback;Connection/› и ‹ParameterBinding Name=dvt_sortdir Default=Desc Location=Postback; Связь/> - person James Allen; 30.11.2010

Что произойдет, если вы сначала выберете столбец Фамилия в SQL?

person Nat    schedule 02.08.2010
comment
К сожалению, это, кажется, не имеет значения :( - person James Allen; 03.08.2010