ObjectDataSource+ListView高效分页(SQL2005适用)

1 篇文章 0 订阅
 

原理:每页显示10条数据,每次只取10条出来,要几条去取几条.DataSet→objectdatasource→ListView.

1,首先创建强类型DataSet,定义两个方法:GetDataCount(),GetPageData().

GetDataCount() //取得总数据条数

SELECT COUNT(*) FROM dbo.book


 

GetPageData() //取得特定条数数据,其中row_number() over()函数表示给查询结果建立内置行号,参数startRowIndex表示起始行号,maximumRows表示每页显示条数

SELECT * FROM 

(SELECT bookId, bookName, class, author, faceUrl, type, hits, hot, bytes, intro, stop, upTime, row_number() over(Order By bookId) rownum FROM dbo.book)t 

WHERE t.rownum>@startRowIndex and t.rownum<=@startRowIndex+@maximumRows


 

由于DataSet并不能识别row_number() over()函数,不能自动添加参数,所以要手动来添加:

2,在页面添加一个ObjectDataSourc和一个ListView控件,分别指定数据源为强类型DataSet,和方法,配置ListView,然后设置ObjectDataSourc的EnablePaging="True",SelectMethod="GetPageData" ,SelectCountMethod="GetDataCount"即可.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="ListView高效分页_Default" %>

<!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></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
          EnablePaging="True"
            OldValuesParameterFormatString="original_{0}" SelectMethod="GetPageData" 
             SelectCountMethod="GetDataCount"
            TypeName="BookTableAdapters.bookTableAdapter" 
            onselected="ObjectDataSource1_Selected">
            
        </asp:ObjectDataSource>
    
    </div>
    <asp:ListView ID="ListView1" runat="server" DataKeyNames="bookId" 
        DataSourceID="ObjectDataSource1" >
        <ItemTemplate>
            <tr style="">
                <td>
                    <asp:Label ID="bookIdLabel" runat="server" Text='<%# Eval("bookId") %>' />
                </td>
                <td>
                    <asp:Label ID="bookNameLabel" runat="server" Text='<%# Eval("bookName") %>' />
                </td>
                <td>
                    <asp:Label ID="classLabel" runat="server" Text='<%# Eval("class") %>' />
                </td>
                <td>
                    <asp:Label ID="authorLabel" runat="server" Text='<%# Eval("author") %>' />
                </td>
                <td>
                    <asp:Label ID="faceUrlLabel" runat="server" Text='<%# Eval("faceUrl") %>' />
                </td>
                <td>
                    <asp:Label ID="typeLabel" runat="server" Text='<%# Eval("type") %>' />
                </td>
                <td>
                    <asp:Label ID="hitsLabel" runat="server" Text='<%# Eval("hits") %>' />
                </td>
                <td>
                    <asp:Label ID="hotLabel" runat="server" Text='<%# Eval("hot") %>' />
                </td>
                <td>
                    <asp:Label ID="bytesLabel" runat="server" Text='<%# Eval("bytes") %>' />
                </td>
                <td>
                    <asp:Label ID="introLabel" runat="server" Text='<%# Eval("intro") %>' />
                </td>
                <td>
                    <asp:Label ID="stopLabel" runat="server" Text='<%# Eval("stop") %>' />
                </td>
                <td>
                    <asp:Label ID="upTimeLabel" runat="server" Text='<%# Eval("upTime") %>' />
                </td>
            </tr>
        </ItemTemplate>
        
        <EmptyDataTemplate>
            <table runat="server" style="">
                <tr>
                    <td>
                        未返回数据。</td>
                </tr>
            </table>
        </EmptyDataTemplate>
        
        <LayoutTemplate>
            <table runat="server">
                <tr runat="server">
                    <td runat="server">
                        <table ID="itemPlaceholderContainer" runat="server" border="0" style="">
                            <tr runat="server" style="">
                                <th runat="server">
                                    bookId</th>
                                <th runat="server">
                                    bookName</th>
                                <th runat="server">
                                    class</th>
                                <th runat="server">
                                    author</th>
                                <th runat="server">
                                    faceUrl</th>
                                <th runat="server">
                                    type</th>
                                <th runat="server">
                                    hits</th>
                                <th runat="server">
                                    hot</th>
                                <th runat="server">
                                    bytes</th>
                                <th runat="server">
                                    intro</th>
                                <th runat="server">
                                    stop</th>
                                <th runat="server">
                                    upTime</th>
                            </tr>
                            <tr ID="itemPlaceholder" runat="server">
                            </tr>
                        </table>
                    </td>
                </tr>
                <tr runat="server">
                    <td runat="server" style="">
                    总条数:<asp:Label ID="label1" runat="server" Text=""></asp:Label>
                    ,共<asp:Label ID="label2" runat="server" Text=""></asp:Label>页,每页显示10条
                        <asp:DataPager ID="DataPager1" runat="server">
                            <Fields>
                                
                                <asp:NextPreviousPagerField ButtonType="Button" ShowFirstPageButton="True" 
                                    ShowNextPageButton="False" ShowPreviousPageButton="True" />
                                <asp:NumericPagerField />
                                <asp:NextPreviousPagerField ButtonType="Button" ShowLastPageButton="True" 
                                    ShowNextPageButton="True" ShowPreviousPageButton="False" />
                            </Fields>
                        </asp:DataPager>
                    </td>
                </tr>
            </table>
        </LayoutTemplate>
        
        
    </asp:ListView>
    </form>
</body>
</html>


 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class ListView高效分页_Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void ObjectDataSource1_Selected(object sender, ObjectDataSourceStatusEventArgs e)
    {
        if (e.ReturnValue.GetType() == typeof(Int32))
        {
            int count = (int)e.ReturnValue;
            Label label1 = (Label)ListView1.FindControl("label1");
            label1.Text = e.ReturnValue.ToString();
            Label label2 = (Label)ListView1.FindControl("label2");
            if (count % 10 == 0)
            {
                label2.Text = Convert.ToString(count / 10);
            }
            else
            {
                label2.Text = Convert.ToString(count / 10 + 1);
            }
        }
    }
}


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值