Как ограничить результаты в запросе SharePoint XSL - PullRequest
0 голосов
/ 29 декабря 2010

Я создаю сайт SharePoint, который мы будем использовать для сообщения о проблемах с грузовыми автомобилями, используемыми в нашем бизнесе. Со списком, который я создал, будет связана страница, на которой будет отображаться обзор грузовиков, а небольшой значок грузовика будет отображать текущее состояние грузовиков. Зеленый и грузовик в порядке (нет открытых проблем), Красный и грузовик имеют открытую проблему со статусом «Неуправляемый», Оранжевый, и есть две открытые проблемы, которые требуют, чтобы пользователь заглянул в грузовик, прежде чем использовать его, и, наконец, серый грузовик на случай, если возникла новая проблема, которая не была рассмотрена (не уверена, является ли она управляемой или нет).

Мне удалось создать «Панель инструментов», и с моим ограничением знания XSL / XPATH смогли добавить грузовик и повторить описание выше, но ... в моем тесте я создал 4 проблемы, например, если три из них меняются на статус «Закрыто» и один оставлен «Неуправляемым». Я получу четыре иконки на странице, три с зелеными грузовиками и последний с красным. Так что в теории это работает, но я, очевидно, хочу видеть только последний грузовик, один грузовик. Мне не интересно видеть других.

<xsl:template name="dvt_1.rowview">
 <xsl:variable name="CountReport" select="count(/dsQueryResponse/Rows/Row[@Highloader='GGEU12' and @Status!='Closed'])" />
 <xsl:variable name="MoreThan" select="$CountReport &gt; 1" />
 <xsl:variable name="NoReports" select="$CountReport = 0" />
 <xsl:variable name="Closed" select=" @Highloader='GGEU12' and @Status='Closed'" />
<xsl:choose>
<xsl:when test="$MoreThan">
<div class="ms-vb"><img title='More than one report exist!' border='0' alt='In Progress' src='highloader/Library/hl-orange.png' /></div>
</xsl:when>
<xsl:otherwise>
   <div class="ms-vb"><xsl:value-of disable-output-escaping="yes" select="@Icon" /></div>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

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

David

1 Ответ

0 голосов
/ 30 декабря 2010

спасибо всем за ваши комментарии. Ниже приведена упрощенная версия «Панели инструментов», которая работает именно так, как я хочу. Вы можете изменить последний статус: недопустимый на «закрытый», чтобы на странице отображалась только первая проблема со статусом Drivable.

issues.xml:

<catalog>
<issue>
    <title>Crack on the window</title>
    <truck>GGEU12</truck>
    <status>Drivable</status>
</issue>
<issue>
    <title>Need new smelling tree</title>
    <truck>GGEU12</truck>
    <status>Closed</status>
</issue>
<issue>
    <title>Topping up cooling</title>
    <truck>GGEU12</truck>
    <status>Closed</status>
</issue>
<issue>
    <title>Flat tire</title>
    <truck>GGEU12</truck>
    <status>Undrivable</status>
</issue>
</catalog>

status.xsl:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<xsl:variable name="CountIssues" select="count(catalog/issue[(truck)='GGEU12' and (status)!='Closed'])" />
<xsl:variable name="MoreThan" select="$CountIssues &gt; 1" />

<html>
<body>
<h2>Truck Status Dashboard</h2>
<table border="1">
  <tr bgcolor="#9acd32">
    <th>Title</th>
    <th>Truck</th>
  </tr>

<xsl:choose>
<xsl:when test="$MoreThan">

  <tr>
    <td>Orange truck icon</td>
    <td>Orange truck icon</td>
  </tr>

</xsl:when>
<xsl:otherwise>

  <xsl:for-each select="catalog/issue[(truck)='GGEU12' and (status)!='Closed']">

  <tr>
    <td><xsl:value-of select="title"/></td>
    <td><xsl:value-of select="truck"/></td>
  </tr>

  </xsl:for-each>
</xsl:otherwise>
</xsl:choose>

</table>

</body>
</html>

</xsl:template>
</xsl:stylesheet>

Итак, у меня проблема с SharePoint. Я попытался включить все, что у меня есть на странице, но я подозреваю, что вы, ребята, должны воспроизвести мои настройки, чтобы увидеть проблему. В приведенном ниже примере будет получен список из четырех проблем, как указано выше, и значение выбора, которое показывает сумму, которую получает переменная count, равную 2, и которая отображается четыре раза (столько элементов, сколько существует):

<WebPartPages:WebPartZone runat="server" Title="loc:Row1" ID="Row1" FrameType="TitleBarOnly" Orientation="Horizontal"><ZoneTemplate>
<WebPartPages:DataFormWebPart runat="server" IsIncluded="True" NoDefaultStyle="TRUE" ViewFlag="0" Title="Service Requests" __markuptype="vsattributemarkup" partorder="1" __WebPartId="{F711505C-6DEC-414D-9742-9327B43A6EB4}" id="g_f711505c_6dec_414d_9742_9327b43a6eb4">
<DataSources><SharePoint:SPDataSource runat="server" DataSourceMode="List" UseInternalName="true" selectcommand="&lt;View&gt;&lt;/View&gt;" id="dataformwebpart2"><SelectParameters><WebPartPages:DataFormParameter Name="ListID" ParameterKey="ListID" PropertyName="ParameterValues" DefaultValue="{EDBDB620-5543-464F-801A-891B15105E59}"/></SelectParameters><DeleteParameters><WebPartPages:DataFormParameter Name="ListID" ParameterKey="ListID" PropertyName="ParameterValues" DefaultValue="{EDBDB620-5543-464F-801A-891B15105E59}"/></DeleteParameters><UpdateParameters><WebPartPages:DataFormParameter Name="ListID" ParameterKey="ListID" PropertyName="ParameterValues" DefaultValue="{EDBDB620-5543-464F-801A-891B15105E59}"/></UpdateParameters><InsertParameters><WebPartPages:DataFormParameter Name="ListID" ParameterKey="ListID" PropertyName="ParameterValues" DefaultValue="{EDBDB620-5543-464F-801A-891B15105E59}"/></InsertParameters></SharePoint:SPDataSource></DataSources>

<datafields>@Title,Titel;@Status,Status;@truck,truck;</datafields>
<XSL><xsl:stylesheet xmlns:x="http://www.w3.org/2001/XMLSchema" xmlns:d="http://schemas.microsoft.com/sharepoint/dsp" version="1.0" exclude-result-prefixes="xsl msxsl ddwrt" xmlns:ddwrt="http://schemas.microsoft.com/WebParts/v2/DataView/runtime" xmlns:asp="http://schemas.microsoft.com/ASPNET/20" xmlns:__designer="http://schemas.microsoft.com/WebParts/v2/DataView/designer" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:SharePoint="Microsoft.SharePoint.WebControls" xmlns:ddwrt2="urn:frontpage:internal">
<xsl:output method="html" indent="no"/>
<xsl:decimal-format NaN=""/>
<xsl:param name="dvt_apos">'</xsl:param>
<xsl:variable name="dvt_1_automode">0</xsl:variable>
<xsl:template match="/">
<xsl:call-template name="dvt_1"/>
</xsl:template>
<xsl:template name="dvt_1">
<xsl:variable name="dvt_StyleName">Table</xsl:variable>
<xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row"/>
    <table border="0" width="100%" cellpadding="2" cellspacing="0">
        <tr valign="top">
            <xsl:if test="$dvt_1_automode = '1'" ddwrt:cf_ignore="1">
                <th class="ms-vh" width="1%" nowrap="nowrap"></th>
            </xsl:if>
            <th class="ms-vh" nowrap="nowrap">Truck</th>
            <th class="ms-vh" nowrap="nowrap">Status</th>
        </tr>
                    <xsl:call-template name="dvt_1.body">
                                    <xsl:with-param name="Rows" select="$Rows"/>
                    </xsl:call-template>
    </table>
</xsl:template>
<xsl:template name="dvt_1.body">
<xsl:param name="Rows"/>
<xsl:for-each select="$Rows">
<xsl:call-template name="dvt_1.rowview"/>
    </xsl:for-each>
</xsl:template>
<xsl:template name="dvt_1.rowview">
 <xsl:variable name="CountIssues" select="count(/dsQueryResponse/Rows/Row[@truck='GGEU12' and @Status!='closed'])" />
 <xsl:value-of select="$CountIssues" />
    <tr>
                    <xsl:if test="position() mod 2 = 1">
                                    <xsl:attribute name="class">ms-alternating</xsl:attribute>
        </xsl:if>
                    <xsl:if test="$dvt_1_automode = '1'" ddwrt:cf_ignore="1">
            <td class="ms-vb" width="1%" nowrap="nowrap">
                <span ddwrt:amkeyfield="ID" ddwrt:amkeyvalue="ddwrt:EscapeDelims(string(@ID))" ddwrt:ammode="view"></span>
            </td>
        </xsl:if>
        <td class="ms-vb">
            <xsl:value-of select="@truck"/>
        </td>
        <td class="ms-vb">
            <xsl:value-of select="@Status"/>
    g   </td>
    </tr>
</xsl:template>
</xsl:stylesheet>

Помощник по решению должен создать новый список с тремя столбцами, грузовиком, названием и статусом. Создайте новую страницу веб-части, и в конструкторе SharePoint создайте представление списка данных, и цель xsl здесь состоит в том, чтобы отобразить зеленый значок, если состояние грузовика является управляемым (или нет отчетов), красный, если он не доступен, и, наконец, оранжевый значок, если Есть более двух проблем с конфликтующими статусами. Когда я делаю это, он отображает столько значков, сколько есть проблем.

Спасибо за чтение!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...