aspnetpager实现高效分页

今天晚上手痒,写了一下代码。使用aspnetpager这个免费的分页控件。

aspx页面部分代码如下:

Code:
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="LearningAspNet.无刷新分页.WebForm1" %>  
  2.   
  3. <%@ Register assembly="AspNetPager" namespace="Wuqi.Webdiyer" tagprefix="webdiyer" %>  
  4.   
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  6.   
  7. <html xmlns="http://www.w3.org/1999/xhtml">  
  8. <head runat="server">  
  9.     <title>AspNetPager+存储过程完成分页</title>  
  10. </head>  
  11. <body>  
  12.     <form id="form1" runat="server">  
  13.     <div>  
  14.      <asp:Repeater ID="Repeater1" runat="server" onitemcommand="Repeater1_ItemCommand"    
  15.             onitemdatabound="Repeater1_ItemDataBound" >  
  16.         <HeaderTemplate><!--头模板-->  
  17.         <table><tr>  
  18.         <td>学生编号</td>  
  19.         <td>学生姓名</td>  
  20.         <td>学生性别</td>  
  21.         <td align="center">操  作</td>  
  22.         </tr>  
  23.         </HeaderTemplate>  
  24.         <ItemTemplate><!--项模板-->  
  25.         <tr>  
  26.         <td><%#Eval("sid") %></td>  
  27.         <td><%#Eval("sname") %></td>  
  28.         <td><%#Eval("ssex") %></td>  
  29.         <td><asp:Button ID="Button1" runat="server" Text="Button" CommandName="btn"  CommandArgument='<%#Eval("sid") %>' />  
  30.         </td></tr>  
  31.         </ItemTemplate>         
  32.           <AlternatingItemTemplate ><!-- 交替行-->  
  33.          <tr style="background-color:Aqua">  
  34.         <td><%#Eval("sid") %></td>  
  35.         <td><%#Eval("sname") %></td>  
  36.         <td><%#Eval("ssex") %></td>  
  37.         <td>  
  38.         <asp:Button ID="Button1" runat="server" Text="Button" CommandName="btn"  CommandArgument='<%#Eval("sid") %>'/>  
  39.         </td>  
  40.         </tr>  
  41.         </AlternatingItemTemplate>  
  42.         <FooterTemplate><!--脚模板-->  
  43.         </table>  
  44.         </FooterTemplate>  
  45.         </asp:Repeater>  
  46.         <asp:Label ID="Label1" runat="server" Text=""></asp:Label>  
  47.     </div>  
  48.       
  49.      <webdiyer:AspNetPager ID="AspNetPager1" runat="server" OnPageChanged="AspNetPager1_PageChanged">  
  50.     </webdiyer:AspNetPager>  
  51.       
  52.     </form>  
  53. </body>  
  54. </html>  

cs后台部分代码:

Code:
  1. using System;   
  2. using System.Collections.Generic;   
  3. using System.Linq;   
  4. using System.Web;   
  5. using System.Web.UI;   
  6. using System.Web.UI.WebControls;   
  7. using System.Data;   
  8. using System.Data.SqlClient;   
  9. using System.Configuration;   
  10.   
  11. namespace LearningAspNet.无刷新分页   
  12. {   
  13.     public partial class WebForm1 : System.Web.UI.Page   
  14.     {   
  15.         string connStr = ConfigurationManager.ConnectionStrings["studentConnectionString"].ToString();   
  16.         protected void Page_Load(object sender, EventArgs e)   
  17.         {   
  18.             if (!IsPostBack)   
  19.             {   
  20.                 bind();   
  21.             }   
  22.         }   
  23.         /// <summary>   
  24.         /// 绑定数据   
  25.         /// </summary>   
  26.         private void bind()    
  27.         {   
  28.             this.AspNetPager1.RecordCount = getRecordCount();//总记录数   
  29.             int curPage = this.AspNetPager1.CurrentPageIndex;//当前页的索引   
  30.             int count = this.AspNetPager1.PageSize=3;//每页显示条数   
  31.             Repeater1.DataSource = getData(curPage, count, "stuinfo""sid");   
  32.             Repeater1.DataBind();   
  33.         }   
  34.         /// <summary>   
  35.         /// 获取数据源   
  36.         /// </summary>   
  37.         /// <param name="curPage">当前页</param>   
  38.         /// <param name="count">每页显示的条数</param>   
  39.         /// <param name="tblName">表名</param>   
  40.         /// <param name="colum">主键(标识)</param>   
  41.         /// <returns></returns>   
  42.         private DataSet getData(int curPage,int count,string tblName,string colum) {   
  43.   
  44.               
  45.               
  46.             SqlConnection conn = new SqlConnection(connStr);   
  47.             try  
  48.             {   
  49.                    
  50.                 conn.Open();       
  51.                     DataSet ds = new DataSet();   
  52.                     SqlCommand cmd = new SqlCommand();   
  53.                     SqlDataAdapter da = new SqlDataAdapter(cmd);   
  54.                     cmd.Connection = conn;   
  55.                     cmd.CommandType = CommandType.StoredProcedure;   
  56.                     cmd.CommandText = "page";   
  57.                     //给存储过程添加参数   
  58.                     cmd.Parameters.Add(new SqlParameter("@currentPage", SqlDbType.Int));   
  59.                     cmd.Parameters.Add(new SqlParameter("@count", SqlDbType.Int));   
  60.                     cmd.Parameters.Add(new SqlParameter("@tableName", SqlDbType.VarChar));   
  61.                     cmd.Parameters.Add(new SqlParameter("@column", SqlDbType.VarChar));   
  62.                     //给参数赋值   
  63.                     da.SelectCommand.Parameters["@currentPage"].Value = curPage;   
  64.                     da.SelectCommand.Parameters["@count"].Value = count;   
  65.                     da.SelectCommand.Parameters["@tableName"].Value = tblName;   
  66.                     da.SelectCommand.Parameters["@column"].Value = colum;   
  67.   
  68.                     // da.SelectCommand = cmd;   
  69.                     da.Fill(ds);   
  70.   
  71.                     return ds;   
  72.   
  73.   
  74.                   
  75.             }   
  76.             catch (Exception)   
  77.             {   
  78.   
  79.                 throw;   
  80.             }   
  81.             finally {   
  82.                 conn.Close();   
  83.             }   
  84.         }   
  85.         /// <summary>   
  86.         /// 查询总记录数   
  87.         /// </summary>   
  88.         /// <returns></returns>   
  89.         private int getRecordCount()    
  90.         {   
  91.             int i = 0;   
  92.             SqlConnection conn = new SqlConnection(connStr);   
  93.             conn.Open();   
  94.             string sql = "select count(*) from stuinfo";//查询处总记录数   
  95.             SqlDataAdapter da = new SqlDataAdapter(sql,conn);   
  96.             object obj = da.SelectCommand.ExecuteScalar();//查询结果的第一行第一列  --总记录条数   
  97.             i = int.Parse(obj.ToString());//总记录条数   
  98.             conn.Close();   
  99.             return i;   
  100.               
  101.         }   
  102.         /// <summary>   
  103.         /// 翻页事件   
  104.         /// </summary>   
  105.         /// <param name="sender"></param>   
  106.         /// <param name="e"></param>   
  107.         protected void AspNetPager1_PageChanged(object sender, EventArgs e)   
  108.         {   
  109.             bind();   
  110.         }   
  111.         /// <summary>   
  112.         /// DataList控件中点击任意一列的按钮会发生   
  113.         /// </summary>   
  114.         /// <param name="source"></param>   
  115.         /// <param name="e"></param>   
  116.         protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)   
  117.         {   
  118.             if (e.CommandName=="btn")   
  119.             {   
  120.                 Label1.Text ="我的学号是"+ e.CommandArgument.ToString();   
  121.                 Label1.Style["color"] = "red";   
  122.             }   
  123.         }   
  124.         /// <summary>   
  125.         /// 每一项绑定的时候   
  126.         /// </summary>   
  127.         /// <param name="sender"></param>   
  128.         /// <param name="e"></param>   
  129.         protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)   
  130.         {   
  131.             if (e.Item.ItemType==ListItemType.Item)   
  132.             {   
  133.                 Button btn = (Button)e.Item.FindControl("Button1");//找到按钮   
  134.                 btn.Text = "汇报";   
  135.             }else if(e.Item.ItemType==ListItemType.AlternatingItem)   
  136.             {   
  137.                 Button btn = (Button)e.Item.FindControl("Button1");   
  138.                 btn.Text = "汇报";   
  139.             }   
  140.         }   
  141.     }   
  142. }  

数据库部分,分页存储过程:

Code:
  1. --存储过程实现灵活的分页   
  2. if object_id('page','p'is not null  
  3. drop proc page   
  4. go   
  5. create proc  page   
  6. @currentPage int=1,--要查询第几页   
  7. @count int=10,--每页显示几条   
  8. @tableName varchar(20),--表名   
  9. @column varchar(20)--列名   
  10. as  
  11. declare @sql nvarchar(1000)   
  12. set @sql = N'select top 'cast(@count as nvarchar(3))    
  13. set @sql=@sql+N' * from '+@tableName+' where '+@column+' not in('  
  14. set @sql=@sql+N'select top '+cast(((@currentPage-1)*@countas nvarchar(3))   
  15. set @sql=@sql+@column+N' from '+@tableName+')'  
  16.   
  17. exec(@sql)   
  18. go   
  19. exec page 1,2,'stuinfo','sid' --测试存储过程  

由于时间有限,代码写的很仓促,很凌乱。大家请勿笑话!

你可能感兴趣的:(sql,exception,存储,webform,asp,button)