ManuelAbadia.com
PagerDataSource samples
Samples



Product Information

PagerDataSource using a Data Source

This sample shows how to use the PagerDataSource to obtain data from a custom data source in order to populate a DataList. In this sample we'll get the data directly from our data mapper, using a method that retrieves all the data from the underlying table. To see an example where we use a method that retrieves the current page only choose the sample "Paging a Data Source (2)".

The PagerDataSource control acts as a data source and as a data consumer. The DataList will consume the data exposed by the PagerDataSource (the data of the current page), and the PagerDataSource will consume the data retrieved from the data mapper.

If the PagerDataSource is not bound to a DataSourceControl, it can not exploit the high degree of integration obtained by using the new ASP.NET 2.0 DataSourceControls, so we have to write some code in order to provide the data to the control.

When the PagerDataSource changes the page to show (and the first time it executes), it will raise the PageChanged event. If the PagerDataSource is bound to a DataSourceControl (using the DataSourceID property), it will fetch the data from the DataSourceControl automatically. However, if the control is not bound to a DataSourceControl, we have to provide the data, setting its DataSource property and then calling to the DataBind method.

The source code for this page is shown after the live sample.


Product List

1
Product 1
Full description for product number 1
2.00 $
2
Product 2
Full description for product number 2
4.00 $
3
Product 3
Full description for product number 3
6.00 $
4
Product 4
Full description for product number 4
8.00 $
5
Product 5
Full description for product number 5
10.00 $
6
Product 6
Full description for product number 6
12.00 $
7
Product 7
Full description for product number 7
14.00 $
8
Product 8
Full description for product number 8
16.00 $
9
Product 9
Full description for product number 9
18.00 $
10
Product 10
Full description for product number 10
20.00 $
11
Product 11
Full description for product number 11
22.00 $
12
Product 12
Full description for product number 12
24.00 $
13
Product 13
Full description for product number 13
26.00 $
14
Product 14
Full description for product number 14
28.00 $
<<<1|2|3|4|5|6|7|8>>>

Sample source code

The ASPX file for this sample is:.


<%@ Page Language="C#" MasterPageFile="~/DefaultMaster.master" AutoEventWireup="true" CodeFile="Paging_DataSource1.aspx.cs" Inherits="Paging_DataSourceId1" Title="Paging with a Data Source Control" %>

 

<%@ Register Assembly="PagerDataSource" Namespace="Manu.Web.UI.WebControls" TagPrefix="manu" %>

 

<asp:Content ID="Content1" ContentPlaceHolderID="Content" Runat="Server">

    <h2>Product List</h2>

 

    <asp:DataList ID="DataList1" runat="server"

        DataKeyField="id" DataSourceID="PagerDataSource1" 

        RepeatColumns="7" RepeatDirection="Horizontal" Width="100%">

        <ItemTemplate>

            <table>

                <tr>

                    <td align="center">

                        <asp:Label ID="idLabel" runat="server"

                        Text='<%# Eval("id") %>'></asp:Label>

                    </td>

                </tr>

                <tr>

                    <td align="center">

                        <b><asp:Label ID="nameLabel" runat="server"

                        Text='<%# Eval("name") %>'></asp:Label></b>

                    </td>

                </tr>

                <tr>

                    <td align="center">

                        <asp:Label ID="descriptionLabel" runat="server"

                        Text='<%# Eval("description") %>'></asp:Label>

                    </td>

                </tr>

                <tr>

                    <td align="center">

                        <asp:Label ID="priceLabel" runat="server"

                        Text='<%# Eval("price", "{0:#0.00}") %>'>

                        </asp:Label> $

                    </td>

                </tr>

            </table>

        </ItemTemplate>

    </asp:DataList>

 

    <manu:PagerDataSource ID="PagerDataSource1" runat="server"

        PageSize="14" OnPageChanged="PagerDataSource1_PageChanged">

    </manu:PagerDataSource>

</asp:Content>


The code-behind file (ASPX.CS) is:


using System;

using Manu.Web.UI.WebControls;

 

public partial class Paging_DataSourceId1 : System.Web.UI.Page

{

    protected void Page_Load(object sender, EventArgs e)

    {

    }

 

    protected void PagerDataSource1_PageChanged(object sender, PageChangedEventArgs e)

    {

        ProductsDAL prodsDAL = new ProductsDAL();

        PagerDataSource1.DataSource = prodsDAL.GetData();

        PagerDataSource1.DataBind();

    }

}