در این مقاله نشان می دهیم که چگونه کنترل 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
موفق باشید !
هیچ دیدگاهی نوشته نشده است.