ASP.NET 分頁預存程序 及 調用,asp.net預存程序

來源:互聯網
上載者:User

ASP.NET 分頁預存程序 及 調用,asp.net預存程序

廢話不多說,只說代碼,及過程


1.建立預存程序

<span style="font-size:18px;">create procedure [dbo].[sp_PagingTabs]@TableName nvarchar(200),/* 表名 */@FieldName nvarchar(500),/* 要查詢的欄位 */@where nvarchar(500),/* 查詢的條件 */@OrderField nvarchar(500),/* 排序指定的欄位 */@Order nvarchar(50),/* 排序 只能是 asc desc */@PageIdORField nvarchar(50),/* 指定欄位來分頁 */@PageSize int ,/* 每頁個數 */@PageIndex int /* 當前頁碼 */ asbegin     /* 先清除字串左右的空格 */     set @TableName = LTRIM(rtrim(@TableName));    set @FieldName = LTRIM(RTRIM(@FieldName));    set @where = LTRIM(RTRIM(@where));    set @Order = LTRIM(RTRIM(@Order));    set @OrderField=LTRIM(RTRIM(@OrderField));    set @PageIdORField =LTRIM(rtrim(@PageIdORField));    /* 然後對非空傳值進行判斷 */if ISNULL(@TableName,'')='' return ;if ISNULL(@FieldName,'')='' set @FieldName='*'; if ISNULL(@Order,'')='' set @Order = 'desc';  /* 查詢分頁的資料 */    declare @sql nvarchar(1000) set @sql=' select top ' + cast(@PageSize as nvarchar(50)) + ' ' + @FieldName + ' from ' + @TableName + ' where 1=1' + @where + ' and ' + @PageIdORField + ' not in(select top ' + cast((@PageSize * (@PageIndex-1)) as nvarchar(50)) + @PageIdORField + ' from ' + @TableName + '  where 1=1 '+@where + ' order by ' + @OrderField + ' ' + @Order+') order by ' + @OrderField  + ' ' + @Order;/* 總頁數  */set @sql+='  select count(*) from  ' + @TableName + ' where 1=1 ' + @where         exec(@sql)end</span>

2.建立方法類

   

        /// <summary>        /// 分頁預存程序        /// </summary>        /// <param name="TableName">表名</param>        /// <param name="FieldName">欄位名</param>        /// <param name="wheres">where條件</param>        /// <param name="order">只能是desc or asc</param>        /// <param name="PageSize">每頁條數</param>        /// <param name="PageIndex">當前頁碼</param>        /// <param name="TotalCount">總頁碼</param>        /// <param name="PageIdORField">指定欄位來分頁</param>        /// <param name="OrderField">排序指定的欄位</param>        public static DataSet LinkProce(string TableName, string FieldName, string wheres, string order,string PageIdORField,string OrderField, ref int PageSize,ref int PageIndex)        {            using (SqlConnection conn = new SqlConnection(Conn.ConnString))            {                conn.Open();                using (SqlCommand cmd = conn.CreateCommand())                {                    cmd.CommandText = "sp_PagingTabs";                    cmd.CommandType = CommandType.StoredProcedure;                    cmd.Parameters.AddWithValue("@TableName", (TableName.Trim() == "User" ? "[User]" : TableName));                    cmd.Parameters.AddWithValue("@FieldName", FieldName);                    cmd.Parameters.AddWithValue("@where", wheres);                    cmd.Parameters.AddWithValue("@Order", order);                    cmd.Parameters.AddWithValue("@OrderField", OrderField);                    cmd.Parameters.AddWithValue("@PageIdORField", PageIdORField);                    cmd.Parameters.AddWithValue("@PageSize", PageSize);                    cmd.Parameters.AddWithValue("@PageIndex", PageIndex);                    SqlDataAdapter da = new SqlDataAdapter();                    da.SelectCommand = cmd;                    DataSet ds = new DataSet();                    try                    {                        da.Fill(ds);                        return ds;                    }                    catch                    {                        return null;                    }                    finally                    {                        ds.Dispose();                        conn.Close();                    }                }            }        }

3.調用方法

    

 public DataSet LinkServer(string TableName, string FieldName, string wheres, string order,string PageIdORField,string OrderField, ref int PageSize, ref int PageIndex)        {            return SQLHelperMe.LinkProce(TableName, FieldName, wheres, order, PageIdORField, OrderField,ref PageSize,ref PageIndex);        }

4.正式使用

    

namespace Web.WebForm1{    public partial class WebForm1 : System.Web.UI.Page    {        private int PageIndex = 0;        public DataTable list;        public string DivPager = "";        protected void Page_Load(object sender, EventArgs e)        {            GetParams();            showData();        }        private void GetParams()        {            if (!String.IsNullOrEmpty(Request["page"]))            {                PageIndex = Convert.ToInt32(Request["Page"]);            }            else            {   PageIndex = 1;            }        }        private void showData()        {            list = new DataTable();             int PageSize = 10;            Pager pager = new Pager(PageIndex);            DivPager = pager.GetDivPager("", pager.LinkServer(" dbo.ze_user ", "*",""," desc "," Id "," Id ",ref PageSize,ref PageIndex), out list);        }    }}

<strong><span style="font-size:24px;">5.</span><span style="font-size:18px; font-family: Arial, Helvetica, sans-serif;">GetDivPager拼接字串</span></strong>
<span style="font-family: Arial, Helvetica, sans-serif;"></span>
<span style="font-family: Arial, Helvetica, sans-serif;">queryString       如果需要在URL加參數,比如:&charset=utf-8</span>
<span style="font-family: Arial, Helvetica, sans-serif;">ds                      從預存程序的取得資料集</span>
<span style="font-family: Arial, Helvetica, sans-serif;">dt                       將列表資料返回</span>
<span style="font-family: Arial, Helvetica, sans-serif;">傳回值               HTML標籤   </span>
<span style="font-family:Arial, Helvetica, sans-serif;"></span><span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name="code" class="csharp">        public string GetDivPager(string queryString, DataSet ds, out DataTable dt)         {             StringBuilder sp = new StringBuilder();            int PageSize = 10;            if (ds != null && ds.Tables.Count > 0)            {                dt = ds.Tables[0];                int TotalCount = Convert.ToInt32(ds.Tables[1].Rows[0][0].ToString());                int rowCount = (TotalCount % PageSize != 0) ? TotalCount / PageSize + 1 : TotalCount / PageSize;                if (dt != null && dt.Rows.Count > 0)                {                    sp.AppendFormat("  <p class=\"fl\">總記錄:<span id=\"sum\">{0}</span>", TotalCount);                    sp.AppendFormat("  頁碼:<em><b id=\"current\">{0}</b>/<span id=\"count\">{1}</span></em> ", PageIndex, rowCount);                    sp.AppendFormat("  每頁:<span id=\"eachPage\">{0}</span></p> ", PageSize);                    sp.AppendFormat("  <div class=\"pagination  fr\"> ");                    sp.AppendFormat("  <a class=\"disabled\" href='{0}'>首頁</a> ", "?page=1" + queryString);                    if (PageIndex > 1)                    {                        sp.AppendFormat("  <a href='{0}'>< 上一頁 </a>", "?page=" + (PageIndex - 1) + queryString);                    }                    int temp = 0;                    int loopc = rowCount > 10 ? 10 : rowCount;                    for (int i = 0; i < loopc; i++)                    {                        temp = i + 1;                        if (PageIndex > 10) { temp = (PageIndex - 10) + i + 1; }                        sp.AppendFormat("  <a class=\"{0}\" href='{1}'>{2}</a>", PageIndex == temp ? "active" : "", "?page=" + temp + queryString, temp);                    }                    if (PageIndex != rowCount)                    {                        sp.AppendFormat("  <a href='{0}'>下一頁 ></a>", "?page=" + (PageIndex + 1) + queryString);                    }                    sp.AppendFormat("  <a href='{0}'>尾頁</a>", "?page=" + rowCount + queryString);                    sp.AppendFormat("  </div>");                }            }            else             {                dt = null;            }            return sp.ToString();        }



6.頁面顯示

   

 <span style="white-space:pre"></span><table width="100%">                <tr>                    <th>                        序號                    </th>                    <th>                        使用者名稱                    </th>                    <th>                        密碼                    </th>                      <th>                        建立時間                    </th>                 </tr>                <%if (list != null && list.Rows.Count > 0)                  {                      int abc = 1;                      foreach (System.Data.DataRow item in list.Rows)                      {%>                <tr>                    <td><input type="checkbox"  name="checkbox2" value="<%=item["ID"] %>" /></td>                    <td><%=abc++ %></td>                    <td><%=item["UserName"]%></td>                    <td><%=item["PASSWORD"]%></td>                    <td><%=Convert.ToDateTime(item["CreateTime"]).ToString("yyyy-MM-dd hh:mm:ss") %></td>                </tr>                <%}        }%>            </table>             <!--分頁 -->            <div runat="server" id="runPageDiv" class="page"></div>

OK!在此大功告成!去瀏覽你的頁面吧。。。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.