ورود / ثبت نام
0
0

کنترل DataPager در ASP.Net

275 بازدید
DataPager

DataPager

در این مقاله نشان می دهیم که چگونه کنترل ASP.Net DataPager را تنظیم کرده و با code behind DataSource از آن استفاده کنیم. مراحل انجام کار به صورت گام به گام به همراه کد ها برایتان قرار داده شده است. همچنین در انتهای مطلب میتوانید دموی این آموزش را نیز دانلود نمایید. امیدوارم از آن استفاده کنید. با من همراه باشید…

DataPager

دیتابیس

در اینجا ما از Northwind دیتابیس مایکروسافت استفاده کردیم که می توانید آن را از لینک زیر دانلود نمایید.

دانلود و نصب دیتابیس

HTML Markup

در اینجا برای کنترل ListView از HTML Table Layout استفاده می کنیم. تگ Table را با Table Header، GroupPlaceHolder و در نهایت سطر Footer و کنترل DataPager ای در آن، در LayoutTemplate قرار می دهیم.

GroupPlaceHolder محتوا را از GroupTemplate نمایش می دهد. GroupTemplate شامل یک PlaceHolder است که توسط تگ های TR احاطه شده است.

PlaceHolder محتوای خود را از ItemTemplate گرفته و نمایش می دهد که تگ های TD در آن قرار داده ایم که از دیتابیس پر می شوند.

<asp:ListView ID="lvCustomers" runat="server" GroupPlaceholderID="groupPlaceHolder1"
ItemPlaceholderID="itemPlaceHolder1" OnPagePropertiesChanging="OnPagePropertiesChanging">
<LayoutTemplate>
    <table cellpadding="0" cellspacing="0">
        <tr>
            <th>
                CustomerId
            </th>
            <th>
                ContactName
            </th>
            <th>
                Country
            </th>
        </tr>
        <asp:PlaceHolder runat="server" ID="groupPlaceHolder1"></asp:PlaceHolder>
        <tr>
            <td colspan = "3">
                <asp:DataPager ID="DataPager1" runat="server" PagedControlID="lvCustomers" PageSize="10">
                    <Fields>
                        <asp:NextPreviousPagerField ButtonType="Link" ShowFirstPageButton="false" ShowPreviousPageButton="true"
                            ShowNextPageButton="false" />
                        <asp:NumericPagerField ButtonType="Link" />
                        <asp:NextPreviousPagerField ButtonType="Link" ShowNextPageButton="true" ShowLastPageButton="false" ShowPreviousPageButton = "false" />
                    </Fields>
                </asp:DataPager>
            </td>
        </tr>
    </table>
</LayoutTemplate>
<GroupTemplate>
    <tr>
        <asp:PlaceHolder runat="server" ID="itemPlaceHolder1"></asp:PlaceHolder>
    </tr>
</GroupTemplate>
<ItemTemplate>
    <td>
        <%# Eval("CustomerId") %>
    </td>
    <td>
        <%# Eval("ContactName") %>
    </td>
    <td>
        <%# Eval("Country") %>
    </td>
</ItemTemplate>
</asp:ListView>

ارتباط بین DataPager با ListView

برای ارتباط دادن کنترل DataPager با ListView باید دو کار انجام دهیم:

ID مربوط به کنترل listView باید به عنوان ویژگی PagedControlID مربوط به DataPager اعمال شود.

باید رویداد OnPagePropertiesChanging را که در زمان تغییر صفحه یا کلیک آن در DataPager اجرا می شود، مشخص کنیم.

فضای نام:

فضاهای نام زیر در پروژه موردنیاز است:

سی شارپ

using System.Data;
using System.Configuration;
using System.Data.SqlClient;

VB.Net

Imports System.Data
Imports System.Configuration
Imports System.Data.SqlClient

اتصال ListView

کنترل ListView در رویداد Load صفحه پر می شود، رکوردهای جدول Customers از دیتابیس Northwind به کنترل ListView متصل (bind) می شوند.

سی شارپ

protected void Page_Load(object sender, EventArgs e)
{
    if (!this.IsPostBack)
    {
        this.BindListView();
    }
}
 
private void BindListView()
{
    string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
    using (SqlConnection con = new SqlConnection(constr))
    {
        using (SqlCommand cmd = new SqlCommand())
        {
            cmd.CommandText = "SELECT CustomerId, ContactName, Country FROM Customers";
            cmd.Connection = con;
            using (SqlDataAdapter sda = new SqlDataAdapter(cmd))
            {
                DataTable dt = new DataTable();
                sda.Fill(dt);
                lvCustomers.DataSource = dt;
                lvCustomers.DataBind();
            }
        }
    }
}

VB.Net

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
    If Not Me.IsPostBack Then
        Me.BindListView()
    End If
End Sub
 
Private Sub BindListView()
    Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString
    Using con As New SqlConnection(constr)
        Using cmd As New SqlCommand()
            cmd.CommandText = "SELECT CustomerId, ContactName, Country FROM Customers"
            cmd.Connection = con
            Using sda As New SqlDataAdapter(cmd)
                Dim dt As New DataTable()
                sda.Fill(dt)
                lvCustomers.DataSource = dt
               lvCustomers.DataBind()
            End Using
        End Using
    End Using
End Sub

مدیریت صفحه بندی در ListView با استفاده از DataPager

زمانی که صفحه تغییر می کند یا در DataPager کلیک می شود، رویداد زیر در listView اجرا می شود.

در اینجا ابتدا کنترل ListView مشخص می شود و سپس متد SetPageProperties آن اجرا می شود و شماره صفحه ها دوباره ایجاد می شوند.

سی شارپ

protected void OnPagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e)
{
    (lvCustomers.FindControl("DataPager1") as DataPager).SetPageProperties(e.StartRowIndex, e.MaximumRows, false);
    this.BindListView();
}

VB.Net

Protected Sub OnPagePropertiesChanging(sender As Object, e As PagePropertiesChangingEventArgs)
    TryCast(lvCustomers.FindControl("DataPager1"), DataPager).SetPageProperties(e.StartRowIndex, e.MaximumRows, False)
    Me.BindListView()
End Sub

موفق باشید !

آیا این مطلب را می پسندید؟
https://www.mspsoft.com/?p=18409
اشتراک گذاری:
واتساپتوییترفیسبوکپینترستلینکدین
داریوش فرخی
داریوش فرخی هستم از سال 92 شروع به یادگیری برنامه نویسی و از سال 93 در بخش برنامه نویسی و تولید محتوای سایت mspsoft.com مشغول هستم. فعالیتم نیز بیشتر در زمینه های برنامه نویسی با سی شارپ و asp.net بوده است. اوقات فراغتم را هم غالبا با تماشای فیلم یا بازی های کامپیوتری پر میکنم .
مطالب بیشتر
برچسب ها:

نظرات

0 نظر در مورد کنترل DataPager در ASP.Net

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

هیچ دیدگاهی نوشته نشده است.