نحوه استفاده از شرطی های XSLT در Data View ها

زمانیکه از طریق برنامه شرپوینت دیزاینر، در یک صفحه شرپوینتی یک Data View برای نمایش اطلاعات لیست ها ایجاد می کنید، ممکن است تصمیم داشته باشید در نمایش اطلاعات توسط Data View به کاربر از شاخص های مختلف استفاده کنید. در ادامه با یک مثال این موضوع رو برای شما تشریح خواهم کرد.

فرض کنید یک لیست دارید که اطلاعات مشتریان شما در آن ثبت میشود. اطلاعات داخل این لیست می تواند شبیه شکل زیر باشد :

 3

در ستون Sales Amount مبلغ فروش فرضی به هر مشتری ثبت شده است. حال ما تصمیم داریم در یک Data View مشتریان را براساس مبلغ فروش مرتب سازی کنیم و به ازای مبالغ فروش به مشتریان یک شاخص خاصی را نسبت دهیم! به اینصورت که مشتریان با فروش زیر ۴٫۰۰۰٫۰۰۰ ریال با شاخص یا KPI قرمز رنگ و مشتریان با فروش بین ۴٫۰۰۰٫۰۰۰ ریال تا ۱۰٫۰۰۰٫۰۰۰ ریال با شاخص زرد و مشتریان با فروش بالای ۱۰٫۰۰۰٫۰۰۰ ریال با شاخص سبز مشخص شوند.

حال وارد شرپوینت دیزاینر شوید و در یک صفحه جدید برای لیست فوق یک Data view ایجاد کنید. شکل زیر :

2

اکنون در دیزاینر یک ستون در کنار ستون Sales amount ایجاد کنید. کد مربوط به Template  با نام dvt_1.rowview به صورت زیر خواهد بود :

<xsl:template name="dvt_1.rowview">
        <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="@Title"/>
            </td>
            <td class="ms-vb">
                <xsl:value-of select="@Tel"/>
            </td>
            <td class="ms-vb">
                <xsl:value-of select="@Email"/>
            </td>
            <td class="ms-vb">
                <xsl:value-of select="format-number(@Sales_x0020_amount, '#,##0.00;-#,##0.00')"/>
            </td><td class="ms-vb">
                // کد مربوط به ستون آخر را اینجا وارد می کنیم
            </td></tr>
    </xsl:template>

که تگ TD انتهای این کد مربوط به کد ستون شاخص خواهد بود. حال باید داخل این تگ شرطهای مورد نظر را براساس ساختار شرطی در زبان XSLT تعریف کنیم. کد این قسمت به صورت زیر خواهد بود :

<xsl:choose>
    <xsl:when test="@Sales_x0020_amount &lt; 4000000">
       <img id="img1" src="/_layouts/images/KPINormal-2.GIF" />
    </xsl:when>
    <xsl:when test="@Sales_x0020_amount &gt;= 4000000 and @Sales_x0020_amount &lt; 10000000">
       <img id="img2" src="/_layouts/images/KPINormal-1.GIF" />
    </xsl:when>
    <xsl:otherwise>
       <img id="img3" src="/_layouts/images/KPINormal-0.GIF" />
    </xsl:otherwise>
</xsl:choose>

در کد فوق ابتدا با تگ <xsl:choose> حلقه شرط را باز می کنیم و سپس با تگ اولیه <xsl:when test="@Sales_x0020_amount &lt; 4000000"> مقدار ستون Sales amount را به صورت IF ( اگر) چک می کنیم. اگر شرط برای سطر Data View صدق کرد تصویر شاخص مربوط به آنرا (قرمز) را نمایش خواهد داد. در غیر اینصورت وارد شرط دوم یعنی <xsl:when test="@Sales_x0020_amount &gt;= 4000000 and @Sales_x0020_amount &lt; 10000000"> شده و آنرا بررسی می کند. در نهایت اگر هیچکدام از دو شرط صادق نبود وارد حلقه آخر یعنی <xsl:otherwise> شده که نقش ELSE را بازی می کند و آنرا چک می کند. در انتها هم تصاویر شاخص را بر اساس ساختار تعریف شده، برای هر سطر تولید می کند! (شکل زیر)

4

شما می توانید از شرطهای مختلف و پیچیده تری به همراه تصاویر دیگری در Data view های تولیدی خود استفاده کنید.

اگر نیاز به اطلاعات بیشتر در مورد کدهای XSLT دارید می توانید به آدرسهای زیر مراجعه کنید :

امیدوارم تمرین امروز براتون مفید بوده باشه. 🙂

پاسخ دهید