65.9K
CodeProject is changing. Read more.
Home

[Silverlight] Custom Datapager UserControl

starIconstarIconstarIconstarIconstarIcon

5.00/5 (3 votes)

Aug 24, 2012

CPOL
viewsIcon

36422

downloadIcon

201

How to create custom Datapager Usercontrol in Silverlight?

Introduction

This tip will help you to create a Custom data pager user control in Silverlight. In this tip, I use DependencyProperty and INotifyPropertyChanged for change navigation button effect.

Background

In this tip, I used DependencyProperty for change Value in User control. A DependencyProperty is a static method that changes the value of an instanced object property. Also I used INotifyPropertyChanged for change property value in Custom user control. Any one can use this custom user control in his/her Silverlight project.

My Datapager looks like:

Sample Image - maximum width is 600 pixels

Now I create one class which points to your database List class. In this class, I write one function which returns a List of record.

Then finally create MainPage.Xaml which contains Datagrid and CustomDatapager User control.

Looks like:

<grid horizontalalignment="Left" width="300" 
removed="White" x:name="LayoutRoot">
        <grid.rowdefinitions>
            <rowdefinition height="250" />
            <rowdefinition height="Auto" />
        </grid.rowdefinitions>
        <sdk:datagrid horizontalalignment="Stretch" verticalalignment="
        Stretch" autogeneratecolumns="True" grid.row="0" 
        name="grdEmployeesNew">
        <my:customdatapagercontrol grid.row="1" pagesize="5" 
        x:name="pagerNew">
    </my:customdatapagercontrol></sdk:datagrid></grid>

In my MainPage.Xaml.cs looks like:

 List<employee> objEmployeeList = new List<employee>();
        int pageSize = 5;

        public MainPage()
        {
            InitializeComponent();
            EmployeePageData obj = new EmployeePageData();
            objEmployeeList = obj.LoadPageRecord();
            pagerNew.PropertyChanged += 
            new System.ComponentModel.PropertyChangedEventHandler(pagerNew_PropertyChanged);
            pagerNew.CurrentPage = 1;
            pagerNew.TotalRecord = objEmployeeList.Count;
        }
        void pagerNew_PropertyChanged
        (object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            if (e.PropertyName == "CurrentPage")
            {
                int currentPage = pagerNew.CurrentPage;
                grdEmployeesNew.ItemsSource = objEmployeeList.Skip
                	((currentPage - 1) * pageSize).Take(pageSize).ToList();
            }
        }

</employee></employee>

Finally Page looks like:

Sample Image - maximum width is 600 pixels