当前位置 : 主页 > 网络编程 > ASP >

ASP.NET (C#) 应用篇-数据列分页操作-01_Adapter_Fill

来源:互联网 收集:自由互联 发布时间:2021-06-24
摘要: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() + "&nbsp;"); ?????????? } ?????????? 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

网友评论