صفحه بندی مطالب سایت در asp.net

ASP.NET

کاربر تازه وارد
تازه وارد
با سلام
چجوری مطالبی که با DataList در ASP.NET نمایش داده میشه رو صفحه بندی کنم؟ ممنون میشم آموزششو قرار بدین

این موارد رو هم داشته باشه ( اولین صفحه ، صفحه بعدی ، شماره صفحات 1234و... ، صفحه قبلی ، آخرین صفحه )
 

HamidReZaa

عضو سایت
پاسخ : صفحه بندی مطالب سایت در asp.net

سلام عزیز

ابتدا یک کنترل دیتالیست در صفحه ی خود قرار دهید و اونو به منبع داده تون مثلاً بانک وصل کنید.

سپس در دیتالیست خود کنترلی رو قرار بدید مثلاً یک کنترل image .

دو دکمه (کنترل Button) در صفحه قرار بدید ؛ از این دکمه ها می خواهیم جهت حرکت در صفحات دیتالیست استفاده کنیم.

و همچنین یک کنترلlable با آیدی lblCurrentPage در صفحه قرار بدید؛ جهت نمایش شماره صفحه ی حاضر.

کد شما هم اکنون چیزی مشابه کد زیر می باشد:

کد:
table>
 <tr>
 <td >
 </td>
 <td style=" text-align: 



	center

 ;">
 <asp:Label ID="lblCurrentPage" runat="server"></asp:Label>&nbsp;</td>
 <td >
 </td>
 </tr>
 <tr>
 <td>
 </td>
 <td style="text-align: 



	center

 ;">
 <asp:button id="cmdPrev" runat="server" text=" << " ></asp:button>
 <asp:button id="cmdNext" runat="server" text=" >> " ></asp:button></td>
 <td >
 </td>
 </tr>
 <tr>
 <td colspan="3">

 <asp:DataList RepeatColumns ="3" RepeatDirection ="horizontal" 
 ID="dlPaging" runat ="server" DataKeyField ="imgid" style="text-align: 



	center

 ">
 <ItemTemplate>
 <br/>
 <asp:Image ID="img" ImageUrl =' <%# Container.DataItem( "imgaddr" )%>' runat ="server" Width ="240px" Height ="210px"/>
 <br /><br />
 </ItemTemplate>
 </asp:DataList></td>
 </tr>
 <tr>
 <td >
 </td>
 <td style="width: 100px">

 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:conString %>"
 SelectCommand="SELECT * FROM [Gallery] ORDER BY [MDateTimesend]"></asp:SqlDataSource>
 </td>
 <td >
 </td>
 </tr>
</table>

هم اکنون به قسمت کدنویسی (کد بی هایند) میریم.

یک ساب بصورت زیر می نویسیم:

کد:
Private Sub FetchDataToDataList()

 Dim cmd As SqlCommand = New SqlCommand("select * from Gallery", con)
        con.Open()
 Dim pagedDS As PagedDataSource = New PagedDataSource
 Dim dt As DataTable = New DataTable("_T")
        dt.Load(cmd.ExecuteReader)
        pagedDS.DataSource = dt.DefaultView
        pagedDS.AllowPaging = True
        pagedDS.PageSize = 6
        pagedDS.CurrentPageIndex = CurrentPage
        dlPaging.DataSource = pagedDS
        dlPaging.DataBind()
        con.Close()

        lblCurrentPage.Text = "Page: " + (CurrentPage + 1).ToString() + " of " + pagedDS.PageCount.ToString()
 'Disable Prev or Next buttons if necessary
        cmdPrev.Enabled = Not (pagedDS.IsFirstPage)
        cmdNext.Enabled = Not (pagedDS.IsLastPage)

End Sub
کار این ساب صفحه بندی دیتالیست هست.
در این کد عمل صفحه بندی رو با استفاده از PagedDataSourceانجام دادیم.

خطی که صورتی کردم تعیین میکنه چند رکورد در هر صفحه ازدیتالیست نمایش داده شه.

توجه کنید که CurrentPage در بالا یک پراپرتی هست که بصورت زیر در کد بی هایند تعریف میکنیم:


کد:
Public Property CurrentPage() As Integer
 Get
 ' look for current page in ViewState
 Dim o As Object = Me.ViewState("_CurrentPage")

 If (o Is Nothing) Then
 Return 0 ' default page index of 0
 Else
 Return CInt(o)
 End If

 End Get

 Set(ByVal value As Integer)

 Me.ViewState("_CurrentPage") = value
 End Set

End Property
جهت فراخوانی این ساب در رویداد Page_Load کد زیر رو وارد کنید:

کد:
If Not IsPostBack Then
            FetchDataToDataList()
End If
برای حرکت بین صفحات دیتالیست در رویداد کلیک دکمه ها کدهای زیر رو می نویسیم:

کد:
Protected Sub cmdPrev_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdPrev.Click
 ' Set viewstate variable to the previous page
        CurrentPage -= 1

 ' Reload control
        FetchDataToDataList()

 End Sub

 Protected Sub cmdNext_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdNext.Click
 ' Set viewstate variable to the previous page
        CurrentPage += 1

 'Reload control
        FetchDataToDataList()

End Sub
موفق باشید.
 
بالا