DataSet分页

摘要:
%@Page Language=“C#”AutoEventWireup=“true”CodeFile=“fenye.aspx”cs“Inherits=“fenye”%>表单id=“form1”runat=“server”>%#DataBinder。Eval(Container.DataItem;Page Next<使用System;

主要利用DataSet的筛选数据的方法
DataAdapter用Fill方法填充DataSet的时候把所取的整个记录加入到DataSet
例如:
    MyAdapter.Fill(DataSet,TableName);
有时候并不需要将整个查询数据都导入DataSet,真正需要的只是数据的一部。Fill的另一种方法可以满足这种需要。
    MyAdapter.Fill(DataSet,StartRow,RowsCount,TableName);
可以看到在这种使用方法中有多出了两个整型参数StartRow与RowCout,他们标识将数据源中从StartRow位置取出RowsCount条记录导入DataSet。得到数据后,程序还将DataSet中的数据显示出来。

代码如下:

DataSet分页第1张DataSet分页第2张Code
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="fenye.aspx.cs" Inherits="fenye" %>

<!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 id="Head1" runat="server">
    
<title>DataList分页</title>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
        
<asp:DataList ID="good" runat="server" Width="530px">
        
<ItemTemplate>
            编号:
<%#DataBinder.Eval(Container.DataItem,"Record_id"%>
        
</ItemTemplate>
        
</asp:DataList></div>
        共有
<asp:Label ID="lblRecordCount" runat="server"></asp:Label>条记录
        当前为
<asp:Label ID="lblCurrentPage" runat="server"/>/<asp:Label ID="lblPageCount" runat="server" Text="Label"/>&nbsp;
      
        
<asp:LinkButton ID="lbnPrevPage" runat="server" CommandName="prev" OnCommand="Page_OnClick">上一页</asp:LinkButton>
        
<asp:LinkButton ID="lbnNextPage" runat="server" CommandName="next" OnCommand="Page_OnClick">下一页</asp:LinkButton>
    
</form>
</body>

</html>















using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data.SqlClient;


public partial class fenye : System.Web.UI.Page
{
    SqlConnection sqlcon;
    
int PageSize, RecordCount, PageCount, CurrentPage;

    
public void Page_Load(object sender, EventArgs e)
    {
        PageSize 
= 10;
        sqlcon 
= new SqlConnection();
        sqlcon.ConnectionString 
= "Data Source=.;database=sony;User Id=sa;Password=local";
        sqlcon.Open();
        
//第一次请求执行
        if (!Page.IsPostBack)
        {
            ListBind();
            CurrentPage 
= 0;
            ViewState[
"PageIndex"= 0;

            
//计算总共有多少条记录
            RecordCount = CalculateRecord();
            lblRecordCount.Text 
= RecordCount.ToString();

            
//计算总共多少页
            PageCount = RecordCount / PageSize;
            lblPageCount.Text 
= PageCount.ToString();
            ViewState[
"PageCount"= PageCount;

        }
    }
    
//计算总共有多少条记录
    public int CalculateRecord()
    {
        
int intCount;
        
string strCount = "select count(*) as co from good";
        SqlCommand sqlcmd 
= new SqlCommand(strCount, sqlcon);
        SqlDataReader sdr 
= sqlcmd.ExecuteReader();
        
if (sdr.Read())
        {
            intCount 
= Int32.Parse(sdr["co"].ToString());
        }
        
else
        {
            intCount 
= 0;
        }
        sdr.Close();
        
return intCount;
    }
    ICollection CreateSource()  
//ICollection为何使用?
    {
        
int StartIndex;

        
//设定导入的起终地址
        StartIndex = CurrentPage * PageSize;
        
string strSel = "select * from good";
        DataSet ds 
= new DataSet();
        SqlDataAdapter sda 
= new SqlDataAdapter(strSel, sqlcon);
        sda.Fill(ds, StartIndex, PageSize, 
"good");//分页的关键所在,该句表示将数据源中从StartIndex位置取出PageSize条记录导入DataSet.
        return ds.Tables["good"].DefaultView;
    }
    
public void ListBind()
    {
        
        good.DataSource 
= CreateSource();
        good.DataBind();
        lbnNextPage.Enabled 
= true;
        lbnPrevPage.Enabled 
= true;
        
if (CurrentPage == (PageCount - 1)) lbnNextPage.Enabled = false;
        
if (CurrentPage == 0) lbnPrevPage.Enabled = false;
        lblCurrentPage.Text 
= (CurrentPage + 1).ToString();
    }
    
public void Page_OnClick(Object sender, CommandEventArgs e)
    {
        CurrentPage 
= (int)ViewState["PageIndex"];
        PageCount 
= (int)ViewState["PageCount"];
        
string cmd = e.CommandName;
        
//判断cmd,以判定翻页方向
        switch (cmd)
        {
            
case "next":
                
if (CurrentPage < (PageCount - 1)) CurrentPage++;
                
break;
            
case "prev":
                
if (CurrentPage > 0) CurrentPage--;
                
break;
        }
        ViewState[
"PageIndex"= CurrentPage;
        ListBind();
    }       

}

免责声明:文章转载自《DataSet分页》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SpringBoot thymeleaf模板版本,thymeleaf模板更换版本java绘图(基于Graphics2D)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Vue.js 源码分析(五) 基础篇 方法 methods属性详解

 methods中定义了Vue实例的方法,官网是这样介绍的: 例如:: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script src="https://cdn.bootcss.com/vue...

vue项目中导出PDF的两种方式

参考大家导出的方式,基本上是如下两种: 1.使用 html2Canvas + jsPDF 导出PDF, 这种方式什么都好,就是下载的pdf太模糊了。对要求好的pdf这种方式真是不行啊!2.调用浏览器自身的方法。window.print() 来打印(打印时可选下载),这种方式打印出来很清楚,但纯在浏览器兼容问题。 谷歌浏览器比较好用点。 两种导出pdf清晰...

java8-&amp;gt;list转map判空,分组

/** * list转map/分组 * @Author: Mr.li * @Date: 2020/9/8 */ @Test public void demo7() { List<User> userList = new ArrayList<User>()...

iMX6UL配置MCP2515模块(SPI转CAN)——基于迅为iTOP-iMX6UL开发板

写在前面   在文章“嵌入式Linux的CAN总线配置——基于迅为iTOP-4412开发板”中我给4412开发板配置了SPI转CAN模块,使用的是不带设备树的内核。在本篇文章中,要使用支持设备树的内核,给iMX6UL开发板配置MCP2515。   打开iMX6UL开发板的串口终端,输入命令ifconfig -a,可以看到CAN0和CAN1两个设备,这是iM...

Using $this when not in object context in

错误信息:$this引用没有上下文 原因:在PHP5中,static声明的静态方法里不可以使用$this 需要使用self来引用当前类中的方法或是变量。  引用的方法里不可以带$this(示例代码中为getres()方法) 示例代码如下: <?php namespace syhladminpage ecord; // 命名空间 require_o...

WinForm GDI+自定义控件总结(一)

前言   由于项目的原因好久没写博客了,也正是项目的原因开始系统的学习WinForm,从而接触到自定义控件的开发。自定义控件的开发有一定的难度,对开发者要求比较高,需要了解Windows运行的机制,熟悉win32Api和GDI+。下面是我收集的一些资料,挺不错的。 资料 .NET组件编程http://www.cnblogs.com/mapserver/ca...