1.建立用户控件Pager.ascx

1.1 html

<script language="javascript">         function callButtonEvent()     {         var keycode =window.event.keyCode;         if(keycode==13)         {             if(check()==true)             {                 event.cancelBubble=true;                 event.returnValue=false;                 document.getElementById('<%=btnGo.ClientID%>').click();             }         }     }     function check()     {         var count =  parseInt(document.getElementById('<%=lblTotal.ClientID%>').outerText);         var txt = document.getElementById('<%=txtCurrentPage.ClientID%>').value;         var cur = parseInt(txt);         if ((cur | NaN) ==0)         {             alert('Input page must format as integer.');                         event.cancelPostBack=true;                         return false;         }         if (cur > count || cur < 1)         {             alert('Input page no out of range.');                         event.cancelPostBack=true;             return false;         }     } </script> <TABLE ID="Table1" CELLSPACING="0" CELLPADDING="0" WIDTH="100%" BORDER="0">     <colgroup>         <col width="400">         <col width="50">         <col width="50">         <col width="40">         <col width="20">         <col width="40">         <col width="40">         <col width="50">         <col width="70">     </colgroup>     <TR align="right">         <td></td>         <TD><asp:LinkButton id="btnFirstPage" runat="server" CommandArgument="First">第一页</asp:LinkButton></TD>         <TD><asp:LinkButton id="btnPrevPage" runat="server" CommandArgument="Prev">上一页</asp:LinkButton></TD>         <TD><ASP:TEXTBOX ID="txtCurrentPage" RUNAT="server" MAXLENGTH="3" Width="40">0</ASP:TEXTBOX></TD>         <TD><ASP:LABEL ID="labOf" RUNAT="server">of</ASP:LABEL></TD>         <TD><ASP:LABEL ID="lblTotal" RUNAT="server">0</ASP:LABEL></TD>         <TD><ASP:BUTTON ID="btnGo" RUNAT="server" TEXT="转到" COMMANDARGUMENT="Go" ToolTip="转到"></ASP:BUTTON></TD>         <TD><asp:LinkButton id="btnNextPage" runat="server" CommandArgument="Next">下一页</asp:LinkButton></TD>         <TD><asp:LinkButton id="btnLastPage" runat="server" CommandArgument="Last">最后一页</asp:LinkButton></TD>     </TR> </TABLE>

1.2 cs代码

public class Pager : System.Web.UI.UserControl     {         protected System.Web.UI.WebControls.Label lblTotal;         protected System.Web.UI.WebControls.Label labOf;         protected System.Web.UI.WebControls.TextBox txtCurrentPage;         protected System.Web.UI.WebControls.Button btnGo;         protected System.Web.UI.WebControls.LinkButton btnFirstPage;         protected System.Web.UI.WebControls.LinkButton btnPrevPage;         protected System.Web.UI.WebControls.LinkButton btnNextPage;         protected System.Web.UI.WebControls.LinkButton btnLastPage;         int size=10;//可以在web.config中配置         public event System.EventHandler NavigationClick;         private void Page_Load(object sender, System.EventArgs e)         {                 this.txtCurrentPage.Attributes.Add("onkeypress","callButtonEvent();");             this.btnGo.Attributes.Add("onclick","check();");             if(!this.IsPostBack)             {                                 SetStyle();                     SetEnable();             }         }         Web Form Designer generated code         btnGo_Click         SetStyle         SetEnable         Property Property     }

2.建立DataGridPage.aspx 3.copy如下html代码

<HTML>     <HEAD>         <title>DataGridPage</title>         <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">         <meta content="C#" name="CODE_LANGUAGE">         <meta content="JavaScript" name="vs_defaultClientScript">         <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">     </HEAD>     <body MS_POSITIONING="GridLayout">         <form id="Form1" method="post" runat="server">             <asp:datagrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 632px; POSITION: absolute; TOP: 40px"                 runat="server"></asp:datagrid><uc1:pager id="Pager1" runat="server"></uc1:pager><asp:datalist id="DataList1" style="Z-INDEX: 102; LEFT: 264px; POSITION: absolute; TOP: 40px"                 runat="server">                 <ItemTemplate>                     <table>                         <tr>                             <td>用户ID:</td>                             <td><%# DataBinder.Eval(Container.DataItem, "UserID"%></td>                             <td>用户名:</td>                             <td><%# DataBinder.Eval(Container.DataItem, "UserName"%></td>                         </tr>                     </table>                 </ItemTemplate>             </asp:datalist>             <asp:repeater id="Repeater1" runat="server">                 <HEADERTEMPLATE>                     <table cellpadding="0" cellspacing="0" border="0">                         <tr>                             <td>用户ID</td>                             <td>用户名:</td>                         </tr>                 </HEADERTEMPLATE>                 <ITEMTEMPLATE>                     <tr>                         <td>                             <%# DataBinder.Eval(Container.DataItem, "UserID")%>                         </td>                         <td><%# DataBinder.Eval(Container.DataItem, "UserName"%></td>                     </tr>                 </ITEMTEMPLATE>                 <FOOTERTEMPLATE>                     </table>                 </FOOTERTEMPLATE>             </asp:repeater></form>     </body> </HTML>
4.拖入用户控件Pager.ascx 5.copy如下cs代码
public class DataGridPage : System.Web.UI.Page     {         protected System.Web.UI.WebControls.DataGrid DataGrid1;         protected UserControl.Pager Pager1;//定义用户控件,根据用户控件所在目录做适当的调整         protected System.Web.UI.WebControls.DataList DataList1;         protected System.Web.UI.WebControls.Repeater Repeater1;         public static string ConnectionString=System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"];                  private void Page_Load(object sender, System.EventArgs e)         {             if (!this.IsPostBack)             {                                 BindData();             }         }                  Bind Data                      ExecSPDataSet         GetList             property         Web Form Designer generated code         private void Pager1_NavigationClick(object sender, EventArgs e)         {             BindData();         }     }
6.测试表结构
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TestGrid]'and OBJECTPROPERTY(id, N'IsUserTable'= 1) drop table [dbo].[TestGrid] GO CREATE TABLE [dbo].[TestGrid] (     [UserID] [int] NOT NULL ,     [UserName] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,     [Country] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,     [State] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,     [Enabled] [bit] NULL  ON [PRIMARY] GO
7.测试存储过程
create PROCEDURE tp_Fetch_List(     @page_num                INT,   @row_in_page             INT,   @order_column            VARCHAR(50),   @row_total               INT  OUTPUT,   @comb_condition          VARCHAR(500) ) AS BEGIN     SET NOCOUNT ON     DECLARE        @jcc_status             INT,       @sql                  NVARCHAR(4000),       @row_ahead        INT         SET @jcc_status = 0   SET @row_ahead = (@page_num-1* @row_in_page SET @sql='SELECT TOP '+ cast(@row_in_page as varchar(255)) +  ' * FROM ( ' SET @sql = @sql + 'SELECT   * FROM TestGrid   ) as A where 1=1' IF LEN(@comb_condition)>0         SET @sql = @sql + ' AND (' + @comb_condition  + ')'     SET @sql = @sql + 'and UserID not in ( select UserID from (' SET @sql = @sql + 'SELECT TOP ' + cast(@row_ahead as varchar(255)) + ' * From (' SET @sql = @sql + 'SELECT   * FROM TestGrid   ) as A where 1=1'     IF LEN(@comb_condition)>0         SET @sql = @sql + ' AND ( ' + @comb_condition  + ' )'         IF LEN(@order_column)>0         BEGIN             SET @sql = @sql + ' ORDER BY ' + @order_column    + ' ) AS B )'         END     ELSE         BEGIN             SET @sql = @sql + ' ) AS B )'         END     IF LEN(@order_column)>0         BEGIN             SET @sql = @sql + ' ORDER BY ' + @order_column              END  print @sql     EXEC (@sql)     SET @sql= N'SELECT @row_total=COUNT(*) FROM (' SET @sql = @sql + 'SELECT  * FROM TestGrid   ) as A where 1=1' IF LEN(@comb_condition)>0         SET @sql = @sql + ' AND (' + @comb_condition  + ')'     print @sql     EXEC sp_executesql @sql,N'@row_total INT OUT',@row_total OUT     IF @@ERROR != 0     BEGIN         SELECT @jcc_status = -98     END exit_bk: -- exit with MS SQL Server error   IF @jcc_status = -98     BEGIN       RAISERROR ('MS SQL Server error, please contact your system administrator.',16,1)WITH NOWAIT       RETURN (@jcc_status)     END -- normal exit    RETURN (0) END GO -- declare @aa int  -- exec tp_Fetch_List 1,10,'',@aa out ,'1=1' -- select @aa
8.源代码下载/Files/singlepine/DataGridPage.rar
posted on 2013-07-06 14:13  Rain&Sun  阅读(303)  评论(0编辑  收藏  举报