摘要:ASP.NET (C#) 应用篇-数据列分页操作-01_Adapter_Fill
using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
public partial class _01_Adapter_Fill : System.Web.UI.Page
{
//取得 Web.config 档的数据连接设定。
ConnectionStringSettings setting = ConfigurationManager.ConnectionStrings["MS-SQL_DB_ConnectionString01"];
//建立对象案例。(选择数据连接模式)
SqlConnection objConnection = new SqlConnection();
//显示分页数据连结函数。
private void ShowDataCurrentPage_Fn(string strSQLVal)
{
//建立并使用Command对象执行SQL命令。
SqlCommand objSelectCommand = new SqlCommand(strSQLVal, objConnection);
//建立对象案例。
SqlDataReader objDataReader = objSelectCommand.ExecuteReader();
//声明整数变量。(每页要显示的数据数)
int intCutPageSize = 3;
//声明整数变量。(分页的总页数)
int intPageCount = 0;
//声明整数变量。(数据的总笔数)
int intRowsCount = 0;
//声明整数变量。(分页的索引页数)
int intPageIndex = 1;
//声明整数变量。(数据的起始笔数)
int intStartIndex = 0;
//取得数据列的总笔数。
while (objDataReader.Read())
{ intRowsCount += 1; }
//当“所有数据数”除于“每页要显示的数据数”取余数等于 0 时。(计算一共有多少分页数)
if (intRowsCount % intCutPageSize == 0)
{
//将“所有数据数”除于“每页要显示的数据数”等于“分页数”。
intPageCount = intRowsCount / intCutPageSize;
}
else //余数不等于 0 时。
{
//将“所有数据数”除于“每页要显示的数据数”等于“分页数”加 1 (补整数+余数的个数)。
intPageCount = intRowsCount / intCutPageSize + 1;
}
//关闭对象。
objDataReader.Close();
//当有传入(分页的索引页数)时。
if (Request.QueryString["Page"] != null)
{
//取得 GET 传入的“分页的索引页数”值。
intPageIndex = int.Parse(Request.QueryString["Page"]);
}
//设定 Label 控件的显示文字。(目前分页情状)
Label_CurPage.Text = "目前在第 " + intPageIndex.ToString() + " 页,共 " + intPageCount.ToString() + " 页";
//设定 HyperLink 控件的超链接网址。(最终页)
HyperLink_Last.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + intPageCount.ToString();
//设定 HyperLink 控件的超链接网址。(第一页)
HyperLink_First.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=1";
//当不是在“第一页索引值”时。
if (intPageIndex != 1)
{
//设定 HyperLink 控件的超链接网址。(上一页、Page 参数值为目前索引页数 PageIndex-1)
HyperLink_Prev.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(intPageIndex - 1);
}
else //是在“第一页索引值”时,
{
//设定 HyperLink 控件不显示在页面中。(上一页)
HyperLink_Prev.Visible = false;
//设定 HyperLink 控件不显示在页面中。(第一页)
HyperLink_First.Visible = false;
}
//当“目前操作的页数索引值”不等于“所有数据数”时。
if (intPageIndex != intPageCount)
{
//设定 HyperLink 控件的超链接网址。(下一页、Page 参数值为目前索引页数 PageIndex+1)
HyperLink_Next.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(intPageIndex + 1);
}
else //是在“第一页索引值”时,
{
//设定 HyperLink 控件不显示在页面中。(下一页)
HyperLink_Next.Visible = false;
//设定 HyperLink 控件不显示在页面中。(最终页)
HyperLink_Last.Visible = false;
}
//当没有任何数据时,不显示分页控件目。
if (intPageCount == 0)
{
//设定 HyperLink 控件不显示在页面中。(上一页)
HyperLink_Prev.Visible = false;
//设定 HyperLink 控件不显示在页面中。(第一页)
HyperLink_First.Visible = false;
//设定 HyperLink 控件不显示在页面中。(下一页)
HyperLink_Next.Visible = false;
//设定 HyperLink 控件不显示在页面中。(最终页)
HyperLink_Last.Visible = false;
//设定 HyperLink 控件不显示在页面中。(页次资讯)
Label_CurPage.Visible = false;
}
//计算起始笔数。(“目前索引页数-1”乘于“每页要显示的数据数”)
intStartIndex = (intPageIndex-1) * intCutPageSize;
//建立对象案例。(用来执行 SQL 命令,之后将执行结果返回的数据放入 DataSet 对象)
SqlDataAdapter objDataAdapter = new SqlDataAdapter(objSelectCommand);
//建立对象案例。
DataSet objDataSet = new DataSet();
//使用DataAdapter对象的Full()方法,将SQL命令执行结果所选取的数据放入DataSet对象。objDataAdapter.Fill(DataSet, 起始笔数, 结束笔数, "数据表")
objDataAdapter.Fill(objDataSet, intStartIndex, intCutPageSize, "FROM");
//声明对象变量。(用来存放数据表)
DataTable dtDataTable = objDataSet.Tables[0];
//将数据库取得的查询结果,读取输出到页面上。
//第一种方式:用 HTML 表格显示。
//读取与显示所有的字段名称
Response.Write("
//读取与显示所有符合筛选条件的数据列,并组合表格填入数据。
for (int I = 0; I <= (dtDataTable.Rows.Count - 1); I++)
{
Response.Write("
" + dtDataTable.Columns[I].Caption + " | "); } Response.Write("
" + dtDataTable.Rows[I][J].ToString() + " | "); } Response.Write("
//第二种方式:用 GridView 控件显示。
//设定 GridView 控件的数据来源,为取得的 DataSet.Tables 里面的数据。
GridView1.DataSource = objDataSet.Tables[0];
//执行 GridView 控件的数据结系。
GridView1.DataBind();
//释放占用资源。
dtDataTable.Dispose();
objDataSet.Dispose();
objDataAdapter.Dispose();
}
//当页面正在载入时所要执行动作。
protected void Page_Load(object sender, EventArgs e)
{
//取得设定数据来源的字符串。
objConnection.ConnectionString = setting.ConnectionString;
//开启数据连接动作。
objConnection.Open();
//当页面是为第一次载入的话执行下列动作。
if (!IsPostBack)
{
//调用显示分页数据连结函数。
ShowDataCurrentPage_Fn("SELECT * FROM [SystemUser_Tb] ORDER BY [ID_F]");
}
//释放占用资源。
objConnection.Dispose();
}
}
详细 UI 部分请自行参阅源代码的.aspx 部分
02_DataCurrentPage
原文:大专栏 ASP.NET (C#) 应用篇-数据列分页操作-01_Adapter_Fill