摘要: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 档的数
摘要: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("
"); ?????? for (int I = 0; I <= dtDataTable.Columns.Count - 1; I++) ?????? { ?????????? Response.Write(" " + dtDataTable.Columns[I].Caption + ""); ?????? } ?????? Response.Write(" "); "); ?????????? for (int J = 0; J <= dtDataTable.Columns.Count - 1; J++) ?????????? { ?????????????? Response.Write(" " + dtDataTable.Rows[I][J].ToString() + " "); ?????????? } ?????????? Response.Write(" "); ?????? } ?????? 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