How to find out whether current page is the last page in listing transformation in repeater


This article describe example how to find out whether current page is the last page in "listing" transformation in repeater, especially when built-in paging is enabled. In this particular example we will set different background for last item than for other items.

Please follow procedure bellow:

1) Add custom function for transformation

2) Put following method into MyFunctions.cs file created in step 1:

    /// <summary>
    /// Returns true if current item in transformation is last item. Otherwise returns false.
    /// </summary>
    /// <param name="sender">Transformation object from which the function is called</param>
    /// <param name="count">Count of items displayed by repeater</param>
    /// <param name="index">Index of current item</param>
    public static bool IsCurrentItemLast(Control sender, int count, int index)
        //get the repeater object
        Control myParent = sender;
        while (myParent != null)
            myParent = myParent.Parent;
            if (myParent is CMS.Controls.CMSRepeater)
                CMS.Controls.CMSRepeater myRepeater = myParent as CMS.Controls.CMSRepeater;
                if ((count - 1) == ((myRepeater.PagerControl.PageSize - 1) * myRepeater.PagerControl.CurrentPage + index))
                    return true;
        return false;

3) Put following sample code into transformation of CMSRepeater:

<div style="background-color: <%# MyFunctions.IsCurrentItemLast(this, DataRowView.DataView.Count, DataItemIndex)? "#FFFFAA" : "#AAFFFF" %>;">
 sample text

If you don't use paging, you may use following expression instead (you don't need to create custom function in this case):

<div style="background-color: <%# (DataRowView.DataView.Count - 1 == DataItemIndex) ? "#FFFFAA" : "#AAFFFF" %>;">
 sample text


See also: Adding custom function for transformation

Applies to:

Kentico CMS 5.5 (Should work in previous versions as well)

Share this article on   LinkedIn Google+