ASP.Netのお勉強

DataListのページングです。@ASP.Net

DataListのページングです。
DataListのPagedDataSourceにはPagedDataSourceを設定します。

PagedDataSourceでページングの処理を行います。
画面に現在のページNoを保持し、ページングを行うButtonを配置します。
各ボタンの処理にてページングの処理を記述します。

ObjectDataSourceを利用すれば、もっと楽だと思います。

●aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default4.aspx.vb" Inherits="Default4" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>DataListのページング</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="pageNoLbl" runat="server" Text="0" Visible="false"></asp:Label>
        <asp:LinkButton ID="preLink" runat="server"><<</asp:LinkButton>
        <asp:LinkButton ID="lastLink" runat="server" >>></asp:LinkButton>
        <asp:DataList ID="DataList1" runat="server" EditItemStyle-Font-Italic="false">
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" Text='<%# Eval("No") %>'></asp:Label>
            </ItemTemplate>
        <EditItemStyle Font-Italic="False" />
        </asp:DataList>
    </div>
    </form>
</body>
</html>


●vb

Imports System.Data

Partial Class Default4
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Me.MyBind(0)
    End Sub

    Protected Sub preLink_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles preLink.Click
        Me.MyBind(CStr(Me.pageNoLbl.Text) - 1)
    End Sub

    Protected Sub lastLink_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lastLink_Click.Click
        Me.MyBind(CStr(Me.pageNoLbl.Text) + 1)
    End Sub

    Protected Sub MyBind(ByVal pageNo As Integer)
        Dim pageDs As PagedDataSource
        Dim dt As DataTable
        Dim dr As DataRow

        'DataListに表示するDataSoruce作成
        dt = New DataTable()

        dt.Columns.Add("No", GetType(String))

        dr = dt.NewRow
        dr("No") = "1"
        dt.Rows.Add(dr)

        dr = dt.NewRow
        dr("No") = "2"
        dt.Rows.Add(dr)

        dr = dt.NewRow
        dr("No") = "3"
        dt.Rows.Add(dr)

        dr = dt.NewRow
        dr("No") = "4"
        dt.Rows.Add(dr)

        dr = dt.NewRow
        dr("No") = "5"
        dt.Rows.Add(dr)

        'PagedDataSource作成
        pageDs = New PagedDataSource()
        pageDs.DataSource = dt.DefaultView
        pageDs.AllowPaging = True
        pageDs.PageSize = 3

        If CInt(pageNo) <= 0 Then
            pageNo = 0
        End If

        If CInt(pageNo) >= pageDs.PageCount Then
            pageNo = pageDs.PageCount
        End If

        'ページ番号設定
        pageDs.CurrentPageIndex = pageNo
        Me.pageNoLbl.Text = pageNo

        'DataListにセットして、DataBind
        Me.DataList1.DataSource = pageDs
        Me.DataList1.DataBind()

    End Sub
End Class

Copyright (C) ASP.Netのお勉強. All Rights Reserved.