您的位置:首页 > 其它

通用分页控件(DataGrid,DataList,Repeater都可以用它来分页) (转)

2007-02-11 02:38 495 查看
(原文:http://singlepine.cnblogs.com/articles/281425.html

</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
<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>用户名:</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>
</td>
</tr>
</ITEMTEMPLATE>
<FOOTERTEMPLATE>
</table>
</FOOTERTEMPLATE>
</asp:repeater></form>
</body>
</HTML>
4.拖入用户控件Pager.ascx
5.copy如下cs代码

public class DataGridPage : System.Web.UI.Page
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: