- 浏览: 234743 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
njmnjx:
humors221 写道这篇文章还不错,不过有一个小问题,就是 ...
html判断页面加载完毕 -
donkey526485268:
httpModules应用 -
humors221:
这篇文章还不错,不过有一个小问题,就是setInterval( ...
html判断页面加载完毕 -
小昭WBCA:
[/ code]
jquery判断子元素是否存在
最近做项目见到别人写的一个分页控件不错,记录一下关于路径的问题。
一、解决方案
二、添加类库项目test
三、添加引用System.Web
四、test下添加类文件Pagination.cs
五、test下添加样式文件Pagination.css(右键此文件--属性--生成操作--嵌入的资源)
六、Pagination.cs文件下添加如下内容
七、注:类文件的命名空间任意,嵌入资源路径要注意。
八、结构图如下:
九、vs工具箱--添加选项卡--选择荐--浏览(上面生成的dll文件)--确定完成。
或者:将dll文件拖曳入vs工具箱中即可。
十、拖曳使用控件。
十一、例句如下:
十二、效果图:
十三、附件:编译完成可用的 dll文件
一、解决方案
二、添加类库项目test
三、添加引用System.Web
四、test下添加类文件Pagination.cs
五、test下添加样式文件Pagination.css(右键此文件--属性--生成操作--嵌入的资源)
六、Pagination.cs文件下添加如下内容
using System; using System.Text.RegularExpressions; using System.Web; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; //这里是引用嵌入资源的路径 项目名称.文件夹.文件名 [assembly: WebResource("test.css.Pagination.css", "css")] namespace Common //命名空间任意 { public class Pagination : WebControl, INamingContainer, IPostBackEventHandler { public enum PaginationMode { Get, Post } #region = 1 Count = /// <summary> /// 内容总条数 /// </summary> public int Count { get { return ViewState["Count"] != null ? (int)ViewState["Count"] : 0; } set { ViewState["Count"] = value; } } #endregion #region = 2 PageNum = /// <summary> /// 每页内容数 /// </summary> public int PageNum { get { return ViewState["PageNum"] != null ? (int)ViewState["PageNum"] : 20; } set { ViewState["PageNum"] = value; } } #endregion #region = 3 CurrentPageIndex = /// <summary> /// 当前页数 /// </summary> public int CurrentPageIndex { get { int currentpageindex = 1; if (ViewState["CurrentPageIndex"] != null) { int.TryParse(ViewState["CurrentPageIndex"].ToString(), out currentpageindex); } else { if (this.Page.Request.QueryString["pages"] != null) { int.TryParse(this.Page.Request.QueryString["pages"].ToString(), out currentpageindex); } } currentpageindex = currentpageindex < 1 ? 1 : currentpageindex; currentpageindex = currentpageindex > PageCount ? PageCount : currentpageindex; return currentpageindex; } set { ViewState["CurrentPageIndex"] = value; } } #endregion #region = 4 PageCount = /// <summary> /// 总页数 /// </summary> public int PageCount { get { return (Count / PageNum) + ((Count % PageNum) == 0 ? 0 : 1); } } #endregion #region = 5 CssUrl = /// <summary> /// 分页样式 /// </summary> public string CssUrl { get { return ViewState["CssUrl"] != null ? ViewState["CssUrl"].ToString() : this.Page.ClientScript.GetWebResourceUrl(base.GetType(), "test.css.Pagination.css"); } //项目名称.文件夹.文件名 set { ViewState["CssUrl"] = value; } } #endregion #region = 6 Mode = /// <summary> /// Pagination的模式 /// </summary> public PaginationMode Mode { get { object obj = this.ViewState["Mode"]; return ((obj == null) ? PaginationMode.Get : ((PaginationMode)obj)); } set { this.ViewState["Mode"] = value; } } #endregion #region = 7 PagesName = /// <summary> /// 分页样式 /// </summary> public string PagesName { get { return ViewState["PagesName"] != null ? ViewState["PagesName"].ToString() : "pages"; } set { ViewState["PagesName"] = value; } } #endregion protected override HtmlTextWriterTag TagKey { get { return HtmlTextWriterTag.Div; } } protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); if (this.PageCount > 1) { if ((this.Page != null) && (this.Page.Header != null)) { string cssKey = "PaginationCss"; if (this.Page.Header.FindControl(cssKey) == null) { HtmlLink child = new HtmlLink(); child.ID = cssKey; child.Href = CssUrl; child.Attributes["type"] = "text/css"; child.Attributes["rel"] = "stylesheet"; this.Page.Header.Controls.Add(child); } this.CssClass = "pagenumber"; } } } #region = RenderContents = protected override void RenderContents(HtmlTextWriter writer) { base.RenderContents(writer); if (this.PageCount > 1) { writer.Write("共"); writer.Write(Count); writer.Write("条"); writer.Write(" "); writer.Write("每页"); writer.Write(PageNum); writer.Write("条"); writer.Write(" "); writer.Write("共"); writer.Write(PageCount); writer.Write("页"); writer.Write(" "); writer.Write("当前为第"); writer.AddAttribute(HtmlTextWriterAttribute.Class, "f90"); writer.RenderBeginTag(HtmlTextWriterTag.B); writer.Write(CurrentPageIndex); writer.RenderEndTag(); writer.Write("页"); writer.Write(" "); writer.Write("选择页数:"); for (int i = 1; i < 5; i++) { if ((CurrentPageIndex - 5 + i) > 0) { if (this.Mode == PaginationMode.Get) { if (HttpContext.Current.Request.RawUrl.ToString().Contains(PagesName + "=")) { writer.AddAttribute(HtmlTextWriterAttribute.Href, Regex.Replace(HttpContext.Current.Request.RawUrl.ToString(), "(.+" + PagesName + "=)(\\d+)(.*)", "$1") + (CurrentPageIndex - 5 + i).ToString() + Regex.Replace(HttpContext.Current.Request.RawUrl.ToString(), "(.+" + PagesName + "=)(\\d+)(.*)", "$3")); } else if (HttpContext.Current.Request.QueryString.Count != 0) { writer.AddAttribute(HtmlTextWriterAttribute.Href, HttpContext.Current.Request.RawUrl.ToString() + "&" + PagesName + "=" + (CurrentPageIndex - 5 + i).ToString()); } else { writer.AddAttribute(HtmlTextWriterAttribute.Href, "?" + PagesName + "=" + (CurrentPageIndex - 5 + i).ToString()); } writer.AddAttribute(HtmlTextWriterAttribute.Class, "pagenumber"); writer.RenderBeginTag(HtmlTextWriterTag.A); writer.Write((CurrentPageIndex - 5 + i).ToString()); writer.RenderEndTag(); } else { PostBackOptions postBackOptions = this.GetPostBackOptions(CurrentPageIndex - 5 + i); string postBackEventReference = null; if (postBackOptions != null) { postBackEventReference = this.Page.ClientScript.GetPostBackEventReference(postBackOptions, true); } if (string.IsNullOrEmpty(postBackEventReference)) { postBackEventReference = "javascript:void(0)"; } writer.AddAttribute(HtmlTextWriterAttribute.Href, postBackEventReference); writer.AddAttribute(HtmlTextWriterAttribute.Class, "pagenumber"); writer.RenderBeginTag(HtmlTextWriterTag.A); writer.Write((CurrentPageIndex - 5 + i).ToString()); writer.RenderEndTag(); } } } writer.AddAttribute(HtmlTextWriterAttribute.Class, "current"); writer.RenderBeginTag(HtmlTextWriterTag.B); writer.Write(CurrentPageIndex); writer.RenderEndTag(); for (int i = 1; i < 5; i++) { if ((CurrentPageIndex + i) <= PageCount) { if (this.Mode == PaginationMode.Get) { if (HttpContext.Current.Request.RawUrl.ToString().Contains(PagesName + "=")) { writer.AddAttribute(HtmlTextWriterAttribute.Href, Regex.Replace(HttpContext.Current.Request.RawUrl.ToString(), "(.+" + PagesName + "=)(\\d+)(.*)", "$1") + (CurrentPageIndex + i).ToString() + Regex.Replace(HttpContext.Current.Request.RawUrl.ToString(), "(.+" + PagesName + "=)(\\d+)(.*)", "$3")); } else if (HttpContext.Current.Request.QueryString.Count != 0) { writer.AddAttribute(HtmlTextWriterAttribute.Href, HttpContext.Current.Request.RawUrl.ToString() + "&" + PagesName + "=" + (CurrentPageIndex + i).ToString()); } else { writer.AddAttribute(HtmlTextWriterAttribute.Href, "?" + PagesName + "=" + (CurrentPageIndex + i).ToString()); } writer.AddAttribute(HtmlTextWriterAttribute.Class, "pagenumber"); writer.RenderBeginTag(HtmlTextWriterTag.A); writer.Write((CurrentPageIndex + i).ToString()); writer.RenderEndTag(); } else { PostBackOptions postBackOptions = this.GetPostBackOptions(CurrentPageIndex + i); string postBackEventReference = null; if (postBackOptions != null) { postBackEventReference = this.Page.ClientScript.GetPostBackEventReference(postBackOptions, true); } if (string.IsNullOrEmpty(postBackEventReference)) { postBackEventReference = "javascript:void(0)"; } writer.AddAttribute(HtmlTextWriterAttribute.Href, postBackEventReference); writer.AddAttribute(HtmlTextWriterAttribute.Class, "pagenumber"); writer.RenderBeginTag(HtmlTextWriterTag.A); writer.Write((CurrentPageIndex + i).ToString()); writer.RenderEndTag(); } } } if ((CurrentPageIndex + 4) < PageCount) { writer.Write("..."); } if (this.Mode == PaginationMode.Get) { writer.Write(" "); writer.Write("跳转到第"); writer.Write("<input id=\"" + this.UniqueID + "\" type=\"text\" onkeypress=\"if(event.keyCode==13){location.href='"); if (HttpContext.Current.Request.RawUrl.ToString().Contains("pages=")) { writer.Write(Regex.Replace(HttpContext.Current.Request.RawUrl.ToString(), "(.+" + PagesName + "=)([\\w\\W^&]*)(.*)", "$1") + "'+this.value+'" + Regex.Replace(HttpContext.Current.Request.RawUrl.ToString(), "(.+" + PagesName + "=)([\\w\\W^&]*)(.*)", "$3") + "'"); } else if (HttpContext.Current.Request.QueryString.Count != 0) { writer.Write(HttpContext.Current.Request.RawUrl.ToString() + "&" + PagesName + "='+this.value"); } else { writer.Write(HttpContext.Current.Request.RawUrl.ToString() + "?" + PagesName + "='+this.value"); } writer.Write(";return false;}\" class=\"page_input\"/>"); writer.Write("页"); } } } #endregion private PostBackOptions GetPostBackOptions(int index) { PostBackOptions options = new PostBackOptions(this, index.ToString()); options.RequiresJavaScriptProtocol = true; return options; } public void RaisePostBackEvent(string eventArgument) { int num; if (int.TryParse(eventArgument, out num)) { this.CurrentPageIndex = num; } } } }
七、注:类文件的命名空间任意,嵌入资源路径要注意。
八、结构图如下:
九、vs工具箱--添加选项卡--选择荐--浏览(上面生成的dll文件)--确定完成。
或者:将dll文件拖曳入vs工具箱中即可。
十、拖曳使用控件。
十一、例句如下:
//头部自动生成引用 <%@ Register Assembly="test" Namespace="Common" TagPrefix="cc1" %> <!--控件拖入此页面自动生成如下内容--> <cc1:Pagination ID="Pagination1" runat="server" /> //后台代码样例 protected void Page_Load(object sender, EventArgs e) { Pagination1.Count = 1000; Pagination1.PageNum = 10; } protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); //注:Repeater控件rptProblemCollection的数据源 //Pagination分页控件ID:UPProblemCollectionPagination //PageNum 页容量 //CurrentPageIndex当前页下标,注意sql拼写时判断CurrentPageIndex<=0时为1 if (isMyQuestion) rptProblemCollection.DataSource = MeetingQuestion.GetAdvanceQuestion(UPProblemCollectionPagination.CurrentPageIndex, UPProblemCollectionPagination.PageNum, MeetingID, CurrentUserID, AUserID, KeyString); else rptProblemCollection.DataSource = MeetingQuestion.GetAdvanceQuestion(UPProblemCollectionPagination.CurrentPageIndex, UPProblemCollectionPagination.PageNum, MeetingID, 0, AUserID, KeyString); rptProblemCollection.DataBind(); }
十二、效果图:
十三、附件:编译完成可用的 dll文件
发表评论
-
保存到桌面 功能
2013-11-19 15:34 965一、准备一个icon图标,图片类型必须是icon类型,不能通过 ... -
单点登录两种实现方案
2013-10-16 13:52 895说是两种其内在实质还是一个思路。 一种是使用js,另一种是使用 ... -
美化File控件-图片按键上传文件
2013-07-16 21:13 2477效果图: 一、显示样式 上传控件显示为一个图片 点击 ... -
dll项目添加服务引用
2011-07-24 16:17 1313当创建一个dll项目中添加了服务引用,但引用这个dll文件者又 ... -
邮件打开统计
2011-07-24 16:08 2838统计邮件是否被打开(或者打开次数) 1、在邮件的最下面(任意 ... -
匹配邮箱
2011-07-24 11:59 1024匹配邮箱 (?m)^((([^\"\s]+)|(&q ... -
ListBox应用
2010-11-13 12:00 1034using System; using System.C ... -
rss 订阅
2010-11-11 20:50 1179//aspx页面内容 <%@ Page Langu ... -
枚举操作类
2010-10-27 20:25 897using System; using System.C ... -
自动执行服务程序 两法
2010-10-10 13:17 1137创建服务程序,利用此程序完成自动执行的工作。两种方法: 首先创 ... -
细边框Table制作 页面居中
2010-07-27 21:08 2611在页面布局时经常会使用到table,但如果使其bo ... -
通过泛型插入(更新)实体数据
2010-07-25 08:56 2427/// <summary> /// 通过泛型 ... -
DataReader 转换成实体(或List)
2010-07-25 08:39 8502/// <summary> /// Data ... -
自定义DateTable样例
2010-07-17 20:05 1006记录流程备查 #region 创建自定义DataTabl ... -
发送邮件的两种方式
2010-07-11 14:44 1232一、实现代码如下: using System; using ... -
提示信息 换行 alert(); titile
2010-03-17 14:13 1852标签的titile属性内容文本换行可使用 代码 ... -
GridViw 绑定DataTable数据源 分页
2010-03-11 15:35 3090使用DataTable后分页有两种形式: 一、使用自定义的分页 ... -
SQL to Linq 翻译软件 Linqer
2010-03-06 10:28 2927先前我使用的是LINQPad,这个软件是一个编写Linq语句进 ... -
母板使用后样式问题
2010-03-03 20:07 957在单一aspx页面中操作没有什么问题,但要处理每个页面的登陆权 ... -
JQueryAPI1.4 中文版
2010-02-27 10:37 876API: 最新JQueryAPI1.4 中文版 大家分享--- ...
相关推荐
"C#自定义控件库"是指使用C#语言编写的、由开发者自定义的控件集合,这些控件可以扩展.NET Framework的标准控件集,为用户提供更丰富的界面元素和功能。自定义控件是软件开发中的一个重要环节,特别是在UI设计和用户...
### QT添加自定义控件 #### 一、引言 在使用QT进行界面设计时,开发者往往会遇到标准控件库无法完全满足特定需求的情况。此时,实现自定义控件成为解决问题的有效途径之一。本文旨在详细介绍如何在QT环境中快速...
在VB6.0中,用户控件(User Control)和自定义控件(Custom Control)是两种非常重要的组件开发技术,它们允许开发者扩展Visual Basic的标准控件库,以满足特定项目的需求。通过创建用户控件和自定义控件,我们可以...
在"labview自定义控件.rar"这个压缩包中,我们关注的是LabVIEW中的一个重要特性——自定义控件。 自定义控件是LabVIEW编程中的一个重要元素,它允许用户根据需求创建具有特定功能或视觉效果的独特界面组件。这不仅...
本资料包“C#自定义控件.rar”显然是关于如何在C#环境中创建和使用自定义控件的教程或示例代码。 自定义控件的创建通常分为几个步骤: 1. **基础类选择**:首先,你需要选择一个基础类来继承。这可以是系统提供的...
"C#自定义控件实例大全,.NET自定义控件实例大全,WINFORM自定义控件实例大全"这个主题涵盖了创建、定制和使用自定义控件的全过程,旨在帮助开发者扩展.NET Framework的基础控件功能。 一、自定义控件的概念 自定义...
在C#编程中,自定义控件是一种强大的工具,它允许开发者根据特定需求扩展或定制标准控件的功能。本文将深入探讨如何创建自定义控件、添加属性以及为它们添加事件,以提升软件界面的交互性和用户体验。 首先,我们要...
在ASP.NET中,用户控件和自定义控件是两种重要的组件,它们扩展了.NET Framework的内置控件,帮助开发者创建具有特定功能和交互性的界面元素。 **用户控件(User Control)** 用户控件是ASP.NET中的基本自定义UI元素...
在Android应用开发中,自定义控件是提升用户体验和实现独特设计的重要手段。《Android自定义控件开发入门与实战》这本书深入浅出地讲解了如何在Android平台上创建和使用自定义控件,旨在帮助开发者从基础知识到实战...
自定义控件是开发人员扩展系统默认功能的一种手段,能够满足特定需求或提供独特的用户体验。在这个案例中,我们将讨论如何创建一个自定义的TextBox控件,该控件仅允许用户输入数字,通过使用正则表达式来屏蔽非数字...
本文将深入探讨“C#自定义控件合集-SunnyUI.rar”这个压缩包中的知识点,包括自定义控件的创建、Button、进度条、Box(可能指的是对话框)以及提示框的实现和外观设计。 首先,自定义控件在C# Winform开发中扮演着...
Qt自定义控件库是一个集合了多种自定义控件资源的压缩包,主要针对Qt开发平台,用于丰富和扩展Qt应用程序的用户界面。Qt是一个跨平台的C++图形用户界面应用程序开发框架,广泛应用于桌面、移动设备以及嵌入式系统的...
本文将深入探讨在Java中使用SWT进行自定义控件的开发。 ### 1. SWT概述 SWT是一个开源的Java库,它的目标是提供与原生GUI库(如Windows的Win32 API,Mac OS的Cocoa,Linux的GTK+)类似的性能和功能。SWT使用JNI...
在C++编程中,自定义控件是一种非常重要的技术,它允许开发者根据需求创建具有特殊功能或特定外观的用户界面元素。自定义控件能够帮助我们实现标准库中没有的功能,提升应用程序的用户体验和交互性。本文将深入探讨...
标题“labview自定义控件、以及一些各种布尔控件.zip”表明这是一个包含多个自定义控件和布尔类型控件的压缩包资源。这些控件可能包括按钮、开关等交互元素,且特别强调了布尔类型的控件,这通常指的是能开启或关闭...
本文将深入探讨如何在WinForms中进行自定义控件的创建和窗体美化,以解决系统默认控件外观不尽如人意的问题。 一、自定义控件的创建 1. 继承现有控件:你可以通过继承System.Windows.Forms中的控件类,如Button、...
在本文中,我们将深入探讨基于Qt框架的自定义控件设计。Qt是一个强大的跨平台应用程序开发框架,广泛用于创建桌面、移动以及嵌入式系统的用户界面。通过自定义控件,开发者可以创建具有独特视觉效果和功能的组件,以...
winform自定义控件开发教程 winform自定义控件开发是指使用C#语言在winform平台上开发自定义控件的过程。自定义控件是winform应用程序中最基本的组件之一,它们可以提供丰富的交互体验和个性化的界面设计。开发...
为了满足特定需求或扩展功能,有时我们需要编写自定义控件。以下将详细介绍如何在VisionPro中创建自定义控件。 1. **创建项目**:首先,你需要在Visual Studio环境中创建一个新的.NET类库项目。在这个例子中,项目...