Python语言技术文档

微信小程序技术文档

php语言技术文档

jsp语言技术文档

asp语言技术文档

C#/.NET语言技术文档

html5/css技术文档

javascript

点击排行

您现在的位置:首页 > 技术文档 > C#/.NET入门教程

asp.net Repeater之非常好的数据分页

来源:中文源码网    浏览:138 次    日期:2024-05-03 16:24:11
【下载文档:  asp.net Repeater之非常好的数据分页.txt 】


asp.net Repeater之非常好的数据分页
分页控件源代码如下: 复制代码 代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Collections; #region Assembly Resource Attribute [assembly: System.Web.UI.WebResource("WebControlLibrary.Js.AjaxHelper.js", "text/javascript")] [assembly: System.Web.UI.WebResource("WebControlLibrary.img.bg_pager.png", "image/gif")] #endregion namespace WebControlLibrary { /// /// Repeater分页控件可进行Ajax分页(但Ajax分页不能传参数) /// [DefaultProperty("Text")] [ToolboxData("<{0}:RepeaterPages runat=server>")] public class RepeaterPages : WebControlLibrary.Repeater { // /// 构造函数 /// public RepeaterPages() : base() { } /// /// 下一页分页文本内容 /// private string _NextPage = ">"; /// /// 下一页标记 /// [Bindable(false), Description("下一页标记所显示的文本内容")] public string NextPage { get { return _NextPage; } set { _NextPage = value; } } /// /// 下一页标记 /// private string _LastPage = "<"; /// /// 上一页标记 /// [Bindable(false), Description("上一页标记所显示的文本内容")] public string LastPage { get { return _LastPage; } set { _LastPage = value; } } /// /// 总记录数属性 /// private int _RecordCount; /// /// 页面分页大小属性 /// private int _PageSize; /// /// 当前页数 /// private int _CurrentPage; /// /// 返回总页面 /// private int _AllPages; /// /// 页面地址 /// private string _Url; /// /// 传入Sql语句 /// private string _SqlString; /// /// 每页显示页码数 /// private int _PageNumberCount; /// /// 数据库中显示的字段列表 /// private string _ShowTableCollName; /// /// 记录数属性 /// [Bindable(true), Category("Appearance"), DefaultValue("0")] private int RecordCount { get { int IntTempValue = 0; if (Int32.TryParse(Sql_Function.SqlDb.RecordCounts(SqlString), out IntTempValue)) return IntTempValue; else return 0; } set { _RecordCount = value; } } /// /// 每页分页大小属性 /// [Bindable(true), Category("Appearance"), DefaultValue("50"), Description("每页分页大小属性")] public int PageSize { get { if (_PageSize == 0 || _PageSize.ToString() == "" || _PageSize > 200) { return 50; } else if (Sql_Function.PublicFunction.isNumber(_PageSize.ToString())) { return 50; } else if (_PageSize <= 0) { return 50; } else if (_PageSize > 200) { return 50; } else { return _PageSize; } } set { _PageSize = value; } } /// /// 每页显示的页码个数 /// [Bindable(true), Category("Appearance"), DefaultValue("5"), Description("每页显示的页码个数")] public int PageNumberCount { get { if (_PageNumberCount == 0 || _PageNumberCount.ToString() == "" || _PageNumberCount > 30) { return 5; } else if (Sql_Function.PublicFunction.isNumber(_PageNumberCount.ToString())) { return 5; } else if (_PageNumberCount <= 0) { return 5; } else if (_PageNumberCount > 30) { return 5; } else { return _PageNumberCount; } } set { _PageNumberCount = value; } } /// /// 返回总页数 /// private int AllPages { get { int totalpage; if (RecordCount / PageSize == 0) { totalpage = RecordCount / PageSize; } else { totalpage = RecordCount / PageSize + 1; } return totalpage; } set { _AllPages = value; } } /// /// 当前页数 /// private int CurrentPage { get { string RequestCurrentPage = System.Web.HttpContext.Current.Request["page"]; #region 计算当前页数 int result_currentpage = 1; if (RequestCurrentPage == null)///指地址栏中没有PAGE字符 { result_currentpage = 1; } if (RequestCurrentPage != null) { if (RequestCurrentPage.Length > 10 || RequestCurrentPage.Length < 1)///防止Convert.ToInt32抛出异常或者防止地址栏所得到的page=这样的值 { result_currentpage = 1; } else///是数值 { if (Sql_Function.PublicFunction.isNumber(RequestCurrentPage))// 判断是否为数值 { result_currentpage = 1; } else { if (Convert.ToInt32(RequestCurrentPage) > AllPages)///是否大于总页数 { result_currentpage = 1; } else { if (Convert.ToInt32(RequestCurrentPage) <= 1)///是否小于页数1 { result_currentpage = 1; } else { result_currentpage = Convert.ToInt32(RequestCurrentPage); } } } } } else { result_currentpage = 1; } return result_currentpage; #endregion } set { _CurrentPage = value; } } /// /// 用于分页所显示URL参数链接(完整的URL参数) /// [Bindable(false), Description("用于分页所显示URL参数链接(完整的URL参数)")] public string Url { get { if (_Url == null || _Url.ToString() == "") { return "?"; } else { if (_Url.IndexOf("?") == -1) { string a = "?"; a = a + _Url; return a; } else if (Convert.ToInt32(StringFindCount(_Url, "?")) > 1)//如果含有多个?号 { return "?"; } else { return _Url; } } } set { _Url = value; } } /// /// 传入Sql语句 /// [Bindable(false), Description("传入统计记录总数的Sql语句 例如:select count(id) from tablename")] public string SqlString { get { if (_SqlString == null || _SqlString.ToString() == "" || _SqlString.Length < 15) { return ""; } else { return _SqlString; } } set { _SqlString = value; } } /// /// 数据库中显示的字段列表 /// [Bindable(false), Description("数据库中显示的字段列表 多个字段中间用逗号隔开")] public string ShowTableCollName { get { if (_ShowTableCollName == null || _ShowTableCollName == "") { return "*"; } else { return _ShowTableCollName; } } set { _ShowTableCollName = value; } } /// /// 分页信息前和尾所包含的HTML代码 /// private string _PageBeforeHtml; /// /// 分页信息前和尾所包含的HTML代码 /// private string _PageLastHtml; /// /// 分页信息前和尾所包含的HTML代码 /// [Bindable(false), Description("分页信息前和尾所包含的HTML代码 ")] public string PageBeforeHtml { get { return _PageBeforeHtml; } set { _PageBeforeHtml = value; } } /// /// 分页信息前和尾所包含的HTML代码 /// [Bindable(false), Description("分页信息前和尾所包含的HTML代码 ")] public string PageLastHtml { get { return _PageLastHtml; } set { _PageLastHtml = value; } } /// /// 调用的样式 /// private string _Css = ""; /// /// 调用的样式 /// [Bindable(false), Category("Behavior"), DefaultValue("默认样式"), TypeConverter(typeof(WebPageCssSelect)), Description("分页样式")] public string Css { get { return _Css; } set { _Css = value; } } /// /// 是否为分页加上快捷输入框输入数值回车导航分页 /// private bool _SelectPage = true; /// /// 是否为分页加上快捷输入框输入数值回车导航分页 /// [Bindable(false), Description("是否为分页加上快捷输入框输入数值回车导航分页")] public bool SelectPage { get { return _SelectPage; } set { _SelectPage = value; } } /// /// 分页显示对齐方式 /// private string _AlignSorts = "right"; /// /// 分页显示对齐方式 /// [Bindable(false), DefaultValue("right"), TypeConverter(typeof(WebPageAlign)), Description("分页显示对齐方式")] public string AlignSorts { get { return _AlignSorts; } set { _AlignSorts = value; } } /// /// 分页Js分页函数调用名称 /// private string _JsFunctionName = "_doPostBack"; /// /// 分页Js分页函数调用名称 /// [Bindable(false), Description("分页Js分页函数调用名称")] public string JsFunctionName { get { if (_JsFunctionName == null || _JsFunctionName.Replace("'", "").Replace("\"", "") == "") { return "_doPostBack"; } else { return _JsFunctionName; } } set { _JsFunctionName = value; } } /// /// 是否启用简洁分页样式 /// private bool _AutoPageConcise = false; /// /// 是否启用简洁分页样式 /// [Bindable(false), Description("是否启用简洁分页样式")] public bool AutoPageConcise { set { _AutoPageConcise = value; } get { return _AutoPageConcise; } } /// /// 是否允许无刷新调用分页 /// private bool _BoolIsAutoAjaxPage = false; /// /// 是否允许无刷新调用分页 /// [Bindable(false), Description("是否允许无刷新调用分页")] public bool BoolIsAutoAjaxPage { get { return _BoolIsAutoAjaxPage; } set { _BoolIsAutoAjaxPage = value; } } /// /// 无刷新调用的页面或自定义控件页面ascx分页信息页 完整路径 /// private string _AutoAjaxPageUrl = ""; /// /// 无刷新调用的页面或自定义控件页面ascx分页信息页 完整路径 /// [Bindable(false), Description("无刷新调用的页面或自定义控件页面ascx分页信息页 完整路径")] public string AutoAjaxPageUrl { get { return _AutoAjaxPageUrl; } set { _AutoAjaxPageUrl = value; } } /// /// 用于无刷新中间级异步调用分页信息页面的中间层页面地址 /// private string _AutoAjaxReturnPageUrl = ""; /// /// 用于无刷新中间级异步调用分页信息页面的中间层页面地址 /// [Bindable(false), Description("用于无刷新中间级异步调用分页信息页面的中间层页面地址")] public string AutoAjaxReturnPageUrl { get { return _AutoAjaxReturnPageUrl; } set { _AutoAjaxReturnPageUrl = value; } } /// /// 无刷新调用的页面所返回的控件ID /// private string _AutoAjaxPageWebControl = ""; /// /// 无刷新调用的页面所返回的控件ID /// [Bindable(false), Description("无刷新调用的页面所返回的控件ID")] public string AutoAjaxPageWebControl { get { return _AutoAjaxPageWebControl; } set { _AutoAjaxPageWebControl = value; } } /// /// 输出html,在浏览器中显示控件 /// /// 要写出到的 HTML 编写器 protected override void Render(HtmlTextWriter output) { base.Render(output); if (!this.Page.ClientScript.IsClientScriptBlockRegistered(this.Page.GetType(), "AjaxPageJs")) { output.Write("\n"); output.Write("\n"); this.Page.ClientScript.RegisterClientScriptBlock(this.Page.GetType(), "AjaxPageJs", ""); } #region 输出分页链接样式 string CssInfo = WebPageCss.CssStyle(Css, AlignSorts, this.Page.ClientScript.GetWebResourceUrl(this.GetType(), "WebControlLibrary.img.bg_pager.png")); output.WriteLine(CssInfo); #endregion #region 输出分页Js output.WriteLine("\n"); #endregion if (!DesignMode) { string Result = Pagination(); if (RecordCount > PageSize) { output.WriteLine(Result); } } } /// /// 调用存储过程返回数据集 /// /// 是否启用存储过程调用数据 true:启用 /// 存储过程名 /// 表名 /// 表中该列来进行分页(必须是唯一性的字符,比如标识种子 /// 完整的排序字段值 不需要order by /// 存储过程分页中的条件 不需要Where /// public System.Data.DataTable getObjectRecordCount(bool IsProc, string PorcedureName, string TableName, string TableCollName, string OrderBy, string Where) { System.Data.DataTable DataTables = new System.Data.DataTable(); if (IsProc) { DataTables = Sql_Function.SqlDb.ReturnDataTable("" + PorcedureName + " '" + TableName + "','" + TableCollName + "'," + CurrentPage + "," + PageSize + ",'" + ShowTableCollName.Replace("'", "") + "','" + OrderBy + "','" + Where + "'"); } else//普通分页 { string StrSql = string.Format("select {0} from {1} where {2} is not null", ShowTableCollName, TableName, TableCollName); if (Where != null && Where.Trim().Replace("'", "") != "") { StrSql += " and " + Where.Trim().Replace("'", ""); } if (OrderBy != null && OrderBy.Trim().Replace("'", "") != "") { StrSql += " order by " + OrderBy.Trim().Replace("'", ""); } try { DataTables = Sql_Function.SqlDb.ReturnDataTablePage(StrSql, CurrentPage, PageSize, "ReturnDataTable"); } catch { DataTables = null; } } return DataTables; } /// /// 分页函数 /// /// 总记录数 /// Url地址 /// 当前页数 public string Pagination() { int allpage = 0;//总页数 int next = 0;//下页标记 int pre = 0;//上一页标记 int startcount = 0;//开始页码数 int endcount = 0;//结束页码数 string pagestr = "";//返回分页结果集 if (CurrentPage < 1) { CurrentPage = 1; } //计算总页数 if (PageSize != 0) { allpage = (RecordCount / PageSize); allpage = ((RecordCount % PageSize) != 0 ? allpage + 1 : allpage); allpage = (allpage == 0 ? 1 : allpage); } next = CurrentPage + 1; pre = CurrentPage - 1; if (PageNumberCount % 2 == 0) { startcount = (CurrentPage + PageNumberCount / 2) > allpage ? allpage - (PageNumberCount - 1) : CurrentPage - (PageNumberCount / 2 - 1); endcount = CurrentPage < PageNumberCount / 2 ? PageNumberCount : CurrentPage + PageNumberCount / 2; } else { startcount = (CurrentPage + PageNumberCount / 2) > allpage ? allpage - (PageNumberCount - 1) : CurrentPage - (PageNumberCount / 2 - 1); endcount = CurrentPage < PageNumberCount / 2 ? PageNumberCount : CurrentPage + PageNumberCount / 2 + 1; } if (startcount < 1) { startcount = 1; } //为了避免输出的时候产生负数,设置如果小于1就从序号1开始 if (allpage < endcount) { endcount = allpage; }//页码+5的可能性就会产生最终输出序号大于总页码,那么就要将其控制在页码数之内 pagestr = "\n" + PageBeforeHtml + "\n"; pagestr += "
\n"; if (!AutoPageConcise) { pagestr += " 页次:" + CurrentPage + "/" + allpage + " \n"; pagestr += "每页" + PageSize.ToString() + "\n"; pagestr += " 记录数" + RecordCount + " \n "; } #region 上一页标记 //pagestr += CurrentPage > 1 ? "1.. " + LastPage + "" : "" + LastPage + ""; pagestr += CurrentPage > 1 ? "1.. " + LastPage + "" : "" + LastPage + ""; #endregion #region 中间页处理,这个增加时间复杂度,减小空间复杂度 ////中间页处理,这个增加时间复杂度,减小空间复杂度 for (int i = startcount; i <= endcount; i++) { //pagestr += CurrentPage == i ? " " + i + "" : " " + i + ""; pagestr += CurrentPage == i ? " \n" + i + "" : " \n" + i + ""; } #endregion #region 下一页标记 //pagestr += CurrentPage != allpage ? " " + NextPage + " .." + allpage + "" : "" + NextPage + ""; pagestr += CurrentPage != allpage ? " " + NextPage + " .." + allpage + "" : "" + NextPage + ""; #endregion if (SelectPage) { pagestr += " \n"; pagestr += "\n\n"; } pagestr += "\n
\n" + PageLastHtml + "\n"; return pagestr; } /// /// 跳转 /// /// 总页数 /// 当前页数 /// 传入链接地址 /// private string SelectPages(int PageCount, int CurrentPage, string Url) { string ResultPage = ""; for (int k = 1; k <= PageCount; k++) { if (k == CurrentPage) { ResultPage += ""; } else { ResultPage += ""; } } return ResultPage; } /// /// 判断某一字符出现的次数 /// /// 目标字符串 /// 要查找的字符 只能为字符,不能为字符串,如果为字符串,则自动洁取第一个字符为默认的字符 /// private string StringFindCount(string str, string split) { int c1 = 0; string a = split; if (split == null || split.ToString() == "" || split.ToString().Trim().Length < 1) { a = " "; } else if (split.ToString().Trim().Length > 1) { a = a.Substring(0, 1); } else { } if (str == null || str.ToString().Trim().Replace("'", "") == "" || str.ToString().Trim().Replace("'", "").Length < 1) { c1 = 0; } else { for (int i = 0; i < str.Length; i++) { if (str[i] == char.Parse(a)) { c1++; } } } return c1.ToString(); } } /// /// 分页样式选择器 /// public class WebPageCssSelect : StringConverter { /// /// 构造函数 /// public WebPageCssSelect() { } /// /// 分页样式选择器编辑属性 /// /// /// public override bool GetStandardValuesSupported(ITypeDescriptorContext context) { return true; } /// /// 获取标准值列表 /// /// /// public override System.ComponentModel.TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) { ArrayList CssArray = new ArrayList(); CssArray.Add("Digg Style"); CssArray.Add("Yahoo Style"); CssArray.Add("New Yahoo! Style"); CssArray.Add("Meneame Style"); CssArray.Add("Flickr Style"); CssArray.Add("Sabros.us Style"); CssArray.Add("Green Style"); CssArray.Add("Gray Style"); CssArray.Add("Black Style"); CssArray.Add("Mis Algoritmos Style"); CssArray.Add("Black-Red Style"); CssArray.Add("Gray Style 2"); CssArray.Add("Yellow Style"); CssArray.Add("jogger Style"); CssArray.Add("512megas Style"); CssArray.Add("Technorati Style"); CssArray.Add("YouTube Style"); CssArray.Add("MSDN Search Style"); CssArray.Add("Msn Gray Style"); CssArray.Add("Badoo"); CssArray.Add("Blue Style"); CssArray.Add("Green-Black Style"); CssArray.Add("viciao Style"); CssArray.Add("默认样式"); return new StandardValuesCollection(CssArray); } /// /// return ture的话只能选,return flase可选可填 /// /// /// public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) { return false; } } /// /// 样式对齐方式 /// public class WebPageAlign : StringConverter { /// /// 构造函数 /// public WebPageAlign() { } /// /// 分页样式选择器编辑属性 /// /// /// public override bool GetStandardValuesSupported(ITypeDescriptorContext context) { return true; } /// /// 获取标准值列表 /// /// /// public override System.ComponentModel.TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) { ArrayList CssArray = new ArrayList(); CssArray.Add("right"); CssArray.Add("left"); CssArray.Add("center"); return new StandardValuesCollection(CssArray); } /// /// return ture的话只能选,return flase可选可填 /// /// /// public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) { return false; } } /// /// 返回样式内容 /// public class WebPageCss { /// /// 返回样式中内容 /// /// 样式种类 /// 样式对齐方式 /// 背景图片 /// public static string CssStyle(string Css, string AlignSorts,string BackGroundImageUrl) { string Result = ""; #region 输出分页链接样式 Result+="\n"; #endregion return Result; } } } 基类Repeater.cs代码如下: 复制代码 代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace WebControlLibrary { /// /// Repeater 控件。 /// [DefaultProperty("Text"), ToolboxData("<{0}:Repeater runat=server>")] public class Repeater : System.Web.UI.WebControls.Repeater { /// /// 构造函数 /// public Repeater() : base() { } } } 所使用的存储过程如下: 复制代码 代码如下: ------------------------------------ --用途:大容量数据存储过程分页 --时间:2009-07-18 22:12 --作者:轻舞飞扬 --qq号:42383239 ------------------------------------ CREATE PROC PageView @tbname sysname, --要分页显示的表名 @FieldKey nvarchar(1000), --用于定位记录的主键(惟一键)字段,可以是逗号分隔的多个字段 @PageCurrent int=1, --要显示的页码 @PageSize int=10, --每页的大小(记录数) @FieldShow nvarchar(1000)='', --以逗号分隔的要显示的字段列表,如果不指定,则显示所有字段 @FieldOrder nvarchar(1000)='', --以逗号分隔的排序字段列表,可以指定在字段后面指定DESC/ASC用于指定排序顺序 @Where nvarchar(1000)='' --查询条件 --@PageCount int=null OUTPUT --总页数 AS SET NOCOUNT ON declare @PageCount int --检查对象是否有效 IF OBJECT_ID(@tbname) IS NULL BEGIN RAISERROR(N'对象"%s"不存在',1,16,@tbname) RETURN END IF OBJECTPROPERTY(OBJECT_ID(@tbname),N'IsTable')=0 AND OBJECTPROPERTY(OBJECT_ID(@tbname),N'IsView')=0 AND OBJECTPROPERTY(OBJECT_ID(@tbname),N'IsTableFunction')=0 BEGIN RAISERROR(N'"%s"不是表、视图或者表值函数',1,16,@tbname) RETURN END --分页字段检查 IF ISNULL(@FieldKey,N'')='' BEGIN RAISERROR(N'分页处理需要主键(或者惟一键)',1,16) RETURN END --其他参数检查及规范 IF ISNULL(@PageCurrent,0)<1 SET @PageCurrent=1 IF len(@PageCurrent)>5 SET @PageCurrent=1 IF ISNULL(@PageSize,0)<1 SET @PageSize=10 IF ISNULL(@FieldShow,N'')=N'' SET @FieldShow=N'*' IF ISNULL(@FieldOrder,N'')=N'' SET @FieldOrder=N'' ELSE SET @FieldOrder=N'ORDER BY '+LTRIM(@FieldOrder) IF ISNULL(@Where,N'')=N'' SET @Where=N'' ELSE SET @Where=N'WHERE ('+@Where+N')' --如果@PageCount为NULL值,则计算总页数(这样设计可以只在第一次计算总页数,以后调用时,把总页数传回给存储过程,避免再次计算总页数,对于不想计算总页数的处理而言,可以给@PageCount赋值) IF @PageCount IS NULL BEGIN DECLARE @sql nvarchar(4000) SET @sql=N'SELECT @PageCount=COUNT(*)' +N' FROM '+@tbname +N' '+@Where --EXEC sp_executesql @sql,N'@PageCount int OUTPUT',@PageCount OUTPUT SET @PageCount=(@PageCount+@PageSize-1)/@PageSize END --计算分页显示的TOPN值 DECLARE @TopN varchar(20),@TopN1 varchar(20) SELECT @TopN=@PageSize, @TopN1=(@PageCurrent-1)*@PageSize --第一页直接显示 IF @PageCurrent=1 EXEC(N'SELECT TOP '+@TopN +N' '+@FieldShow +N' FROM '+@tbname +N' '+@Where +N' '+@FieldOrder) ELSE BEGIN --处理别名 IF @FieldShow=N'*' SET @FieldShow=N'a.*' --生成主键(惟一键)处理条件 DECLARE @Where1 nvarchar(4000),@Where2 nvarchar(4000), @s nvarchar(1000),@Field sysname SELECT @Where1=N'',@Where2=N'',@s=@FieldKey WHILE CHARINDEX(N',',@s)>0 if len(@s)>2-----解决当主键字段长度小于2时出现的情况 begin SELECT @Field=LEFT(@s,CHARINDEX(N',',@s)-1), @s=STUFF(@s,1,CHARINDEX(N',',@s),N''), @Where1=@Where1+N' AND a.'+@Field+N'=b.'+@Field, @Where2=@Where2+N' AND b.'+@Field+N' IS NULL', @Where=REPLACE(@Where,@Field,N'a.'+@Field), @FieldOrder=REPLACE(@FieldOrder,@Field,N'a.'+@Field), @FieldShow=REPLACE(@FieldShow,@Field,N'a.'+@Field) end else begin SELECT @Field=@s, @s=STUFF(@s,1,CHARINDEX(N',',@s),N''), @Where1=@Where1+N' AND a.'+@Field+N'=b.'+@Field, @Where2=@Where2+N' AND b.'+@Field+N' IS NULL', @Where=REPLACE(@Where,@Field,N'a.'+@Field), @FieldOrder=REPLACE(@FieldOrder,@Field,N'a.'+@Field), @FieldShow=REPLACE(@FieldShow,@Field,N'a.'+@Field) end SELECT @Where=REPLACE(@Where,@s,N'a.'+@s), @FieldOrder=REPLACE(@FieldOrder,@s,N'a.'+@s), @FieldShow=REPLACE(@FieldShow,@s,N'a.'+@s), @Where1=STUFF(@Where1+N' AND a.'+@s+N'=b.'+@s,1,5,N''), @Where2=CASE WHEN @Where='' THEN N'WHERE (' ELSE @Where+N' AND (' END+N'b.'+@s+N' IS NULL'+@Where2+N')' --执行查询 EXEC(N'SELECT TOP '+@TopN +N' '+@FieldShow +N' FROM '+@tbname +N' a LEFT JOIN(SELECT TOP '+@TopN1 +N' '+@FieldKey +N' FROM '+@tbname +N' a '+@Where +N' '+@FieldOrder +N')b ON '+@Where1 +N' '+@Where2 +N' '+@FieldOrder) END GO 调用的数据库底层代码: 复制代码 代码如下: using System; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Collections; using System.Collections.Generic; using System.Xml; using System.Text; using System.Data.Common; using System.Text.RegularExpressions; using System.Reflection; using System.IO; namespace Sql_Function { /// /// 数据处理底层 数据基本操作 /// public class SqlDb { #region 数据库公用连接字符串 public static readonly string ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString(); #endregion #region 数据库操作方法 连接和关闭对象 /// /// 打开数据库连接 /// /// public static SqlConnection OpenDataBase() { SqlConnection conn = new SqlConnection(ConnectionString); try { conn.Open(); return conn; } catch (Exception ex) { throw new Exception(ex.Message); } } /// /// 关闭数据库连接 /// /// public static void CloseDataBase(SqlConnection conn) { try { if (conn != null) { conn.Close(); conn.Dispose(); } } catch (Exception ex) { conn.Close(); conn.Dispose(); throw new Exception(ex.Message); //throw new ArgumentNullException("connection"); } finally { conn.Close(); } } #endregion #region 数据库返回DataTable /// /// 返回指定Sql语句的返回DataTable /// /// 传入的Sql语句 /// DataTable public static DataTable ReturnDataTable(string strSQL) { SqlConnection conn = OpenDataBase(); DataTable table = new DataTable(); SqlDataAdapter da = null; try { da = new SqlDataAdapter(strSQL, conn); da.Fill(table); da.Dispose(); CloseDataBase(conn); return table; } catch (Exception e) { da.Dispose(); table.Dispose(); CloseDataBase(conn); throw new Exception(e.Message); } finally { da.Dispose(); CloseDataBase(conn); } } /// /// 返回DataTable记录集,并且实现分页功能 /// /// 传入SQL语句 /// 当前页 /// 每页分页大小 /// 填充数据库表名称 /// public static DataTable ReturnDataTablePage(string sqls, int currentpage, int pagesize, string table) { SqlConnection conn = OpenDataBase(); DataSet ds = new DataSet(); SqlDataAdapter da = new SqlDataAdapter(sqls, conn); try { int startcount; if (currentpage < 1) { startcount = currentpage * pagesize; } else { startcount = (currentpage - 1) * pagesize; } da.Fill(ds, startcount, pagesize, table); da.Dispose(); CloseDataBase(conn); return ds.Tables[0]; } catch (Exception ex) { da.Dispose(); CloseDataBase(conn); ds.Dispose(); throw new Exception(ex.Message); } finally { da.Dispose(); CloseDataBase(conn); } } #endregion #region 数据库公用方法集 /// /// 返回记录总数 传入带有count(主键)统计的Sql语句 /// /// 传入带有count(主键)统计的Sql语句 /// public static string RecordCounts(string StrSql) { string ProcInfo = "0"; SqlConnection conn = OpenDataBase(); SqlCommand comm = new SqlCommand(StrSql, conn); comm.CommandTimeout = 120; SqlDataReader DataReaders = comm.ExecuteReader(); //返回值 if (DataReaders.Read()) { ProcInfo = DataReaders[0].ToString(); } DataReaders.Close(); comm.Dispose(); CloseDataBase(conn); return ProcInfo; } #endregion } } using System; using System.Collections.Generic; using System.Text; namespace Sql_Function { public class PublicFunction { /// /// 判断是否为数字 TRUE代表不是数字,False代表是数字 /// /// 字符串 /// public static bool isNumber(string s) { int Flag = 0; char[] str = s.ToCharArray(); for (int i = 0; i < str.Length; i++) { if (Char.IsNumber(str[i])) { Flag++; } else { Flag = -1; break; } } if (Flag > 0) { return false; } else { return true; } } } } 前台页面样例: 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="FrameWork.Web.Index" %> Repeater数据分页


后台代码: 复制代码 代码如下: using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; namespace FrameWork.Web { public partial class Index : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Bind(); } } protected void Bind() { string Sql = "select count(Sys_NewsList_ID) from Sys_NewsList";//查询Sql语句 #region 列表选项 #region 分页控件基本属性 RepeaterPages1.SqlString = Sql;//用于统计总记录数和进行数据分页的Sql语句 RepeaterPages1.LastPage = "< Prev"; RepeaterPages1.NextPage = "Next > "; RepeaterPages1.PageBeforeHtml = ""; RepeaterPages1.PageLastHtml = ""; #region 构造Url参数 System.Text.StringBuilder StrBulider = new System.Text.StringBuilder(); StrBulider.Append("&a="); #endregion RepeaterPages1.Url = StrBulider.ToString(); #endregion #region 数据绑定 RepeaterPages1.DataSource = RepeaterPages1.getObjectRecordCount(true, "PageView", "Sys_NewsList", "Sys_NewsList_ID", " Sys_NewsList_ID desc", " Sys_NewsList_ID is not null"); RepeaterPages1.DataBind(); #endregion #endregion } } }

相关内容