用户自定义控件的应用。

控件

asp.net中的 用户自定义控件 特点 1:实现服用;2:方便创建(相对与组件)。 以下为一个分页导航条的sample, 接见于Webdiyer,相信很多人已经如雷贯耳了,我也不多介绍。本问只是简单的 练习之作,没有什么深奥的算法和架构。

----behindCode---------------------------------------------------------------------------------------------------------------

namespace GallonKit
{
 using System;
 using System.Data;
 using System.Drawing;
 using System.Web;
 using System.Web.UI.WebControls;
 using System.Web.UI.HtmlControls;

 /// <summary>
 ///  PageBar 的摘要说明。
 /// </summary>
 
 public delegate void PageLocalBtn(uint index);

 public class PageBar : System.Web.UI.UserControl
 {
  protected System.Web.UI.WebControls.LinkButton LinkButton1;
  protected System.Web.UI.WebControls.LinkButton btn_fistPage;
  protected System.Web.UI.WebControls.LinkButton btn_lastPage;
  protected System.Web.UI.WebControls.LinkButton btn_prePage;
  protected System.Web.UI.WebControls.LinkButton btn_nextPage;
  protected System.Web.UI.WebControls.Label lb_PageCount;
  protected System.Web.UI.WebControls.TextBox tb_pageIndex;
  protected System.Web.UI.WebControls.LinkButton btn_local;
  public PageLocalBtn LocalBtnClick;
  

  private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
  
  }

  private bool IsUint(string strInt)
  {
   try
   {
    uint.Parse(strInt);
   }
   catch(Exception e)
   {
    return false;
   }

   return true;
   
  }

  
  
  public uint pageIndex
  {
   get{
    if (this.IsUint(this.tb_pageIndex.Text.Trim()))
       return uint.Parse(this.tb_pageIndex.Text.Trim());
    return 0;
    }

   set{
    if (this.IsUint(value.ToString()))
     this.tb_pageIndex.Text = value.ToString();
    else
     throw new System.Exception("页数范围不正确!");

   }
  }

  

  public uint pageCount
  {
   get
   {
    object obj = ViewState["PageCount__"];
    return (obj == null)?0:(uint)obj;
   }

   set
   {
    
    if (this.IsUint(value.ToString()))
    {
     this.lb_PageCount.Text = value.ToString();
     ViewState["PageCount__"] = value;
    }
    else
     throw new System.Exception("页数范围不正确!");
   }

  }

  
  #region Web 窗体设计器生成的代码
  override protected void OnInit(EventArgs e)
  {
   //
   // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
   //
   InitializeComponent();
   base.OnInit(e);
  }
  
  /// <summary>
  ///  设计器支持所需的方法 - 不要使用代码编辑器
  ///  修改此方法的内容。
  /// </summary>
  private void InitializeComponent()
  {
   this.btn_fistPage.Click += new System.EventHandler(this.btn_fistPage_Click);
   this.btn_prePage.Click += new System.EventHandler(this.btn_prePage_Click);
   this.btn_nextPage.Click += new System.EventHandler(this.btn_nextPage_Click);
   this.btn_lastPage.Click += new System.EventHandler(this.btn_lastPage_Click);
   this.btn_local.Click += new System.EventHandler(this.btn_local_Click);
   this.Load += new System.EventHandler(this.Page_Load);

  }
  #endregion

  private void EnableAllBtn()
  {
   this.btn_fistPage.Enabled = true;
   this.btn_lastPage.Enabled = true;
   this.btn_prePage.Enabled  = true;
   this.btn_nextPage.Enabled = true;

  }

  private void ChangeBtnStatus(char BtnIndex)
  {
   switch(BtnIndex)
   {
    case 'F':
     this.btn_fistPage.Enabled = false;
     this.btn_prePage.Enabled = false;
     break;
    case 'L':
     this.btn_nextPage.Enabled = false;
     this.btn_lastPage.Enabled = false;
     break;
    case 'P':
     this.btn_prePage.Enabled = false;
     break;
    case 'N':
     this.btn_nextPage.Enabled = false;
     break;
   }
  }
  
  private void btn_lastPage_Click(object sender, System.EventArgs e)
  {
   EnableAllBtn();

   if( LocalBtnClick != null)
   {
    LocalBtnClick(this.pageCount);
   }

   this.ChangeBtnStatus('L');
  }

  private void btn_fistPage_Click(object sender, System.EventArgs e)
  {
   EnableAllBtn();
   if( LocalBtnClick != null)
   {
    LocalBtnClick(1);
   }

   this.ChangeBtnStatus('F');
  }

  private void btn_prePage_Click(object sender, System.EventArgs e)
  {
   EnableAllBtn();

   if (LocalBtnClick  == null) return;
   if (this.pageIndex>1)
    this.pageIndex--;
   else
   {
    this.ChangeBtnStatus('P');
    this.ChangeBtnStatus('F');
   }

   this.LocalBtnClick(this.pageIndex);
  
  }

  private void btn_nextPage_Click(object sender, System.EventArgs e)
  {
   EnableAllBtn();
   if (LocalBtnClick  == null) return;
   if (this.pageIndex<this.pageCount)
    this.pageIndex++;
   else
   {
    this.ChangeBtnStatus('N');
    this.ChangeBtnStatus('L');

   }

   this.LocalBtnClick(this.pageIndex);
  }

  private void btn_local_Click(object sender, System.EventArgs e)
  {
   EnableAllBtn();
   if (this.pageIndex <=1)
   {
    this.tb_pageIndex.Text = "1";
    this.ChangeBtnStatus('F');
   }
   else
   {
    if(this.pageIndex >= this.pageCount )
    {
     this.pageIndex = this.pageCount;
     this.ChangeBtnStatus('L');
    }
   }

   if( LocalBtnClick != null)
    LocalBtnClick(this.pageIndex);
   
  }
 }
}
====================aspx文件=====================================================

 | 首页 | 前页 | 后页 | 末页 |1 Go |总页数

时间: 2024-10-28 18:14:37

用户自定义控件的应用。的相关文章

图象显示和翻转控件(用户自定义控件)--我也来凑凑热闹--(转)

控件|显示 using System;using System.Collections;using System.ComponentModel;using System.Drawing;using System.Data;using System.Windows.Forms; namespace ImageZoomer{    /// <summary>    ///     /// </summary>        //枚举类型定义,定义图象的四种翻转方式    public

Asp.net动态加载用户自定义控件,并转换成HTML代码

Ajax现在已经是相当流行的技术了,Ajax不仅是想服务器端发送消息,更重要的是无刷新的重载页面. 如果页面单纯的使用js来创建,要写大量的代码,而且不直观. 在asp.net中,其实我们可以创建用户自定义控件,通过Ajax请求返回用户自定义控件HTML代码. public static string RangerUsControl(string controlName) { StringBuilder build = new StringBuilder(); HtmlTextWriter ht

asp.net用户自定义控件中样式表应用不了

问题描述 我用的是母板页,在母板也里边引用了两个外部样式表文件,然后我又写了一个用户自定义控件,(自定义控件样式全在母板引用的两个样式表中),但是页面浏览的时候,样式根本就没加上,只能用内联的方式来加样式才可以起效,请高手指点 解决方案 解决方案二:会起作用的.解决方案三:是啊,理论上是完全可以起作用的,但实际上的确是控制不了,并且是其他的页面都可以,就唯独这个不行,我估计是这个用户自定义控件里边有问题,但是我排查了好几遍,没发现什么错误解决方案四:是不是用户控件没关系.问题是页面关系,我觉得.

用户自定义控件问题.

问题描述 这段是调用用户自定义控件的代码.<uc1:PictureListID="PictureList1"runat="server"/>但是拖入控件后给页面自动加了个<formid="form1"runat="server">结果页面全部乱了.页面里有很多ajax处理form的地方.结果我就把自动加入的<formid="form1"runat="server&qu

帮忙说一下引用页中获取用户自定义控件的值

问题描述 一个用户自定义控件添加到了引用页:运行时怎么获取自定义控件中控件的值:我做了个添加分类的自定义控件有个DROPDOWNLIST,然后在写文章(ADDATCL.ASPX)的那页添加,因为DROPDOWNLIST与数据绑定,所以我要获取绑后的SELECTEDVALUE给写文章(ADDATCL.ASPX)的页然后添加到数据库 解决方案 解决方案二:1.给用户控件添加一个公共属性2.要么用findcontrol方法,这种方法是迟绑定(late-binding),效率很低的,建议属性的方法解决方

用户自定义控件怎么调用,循环它

问题描述 用户自定义控件怎么调用,循环它在WINFORM中?????? 解决方案 解决方案二:一般是把一个控件加上类库来使用-或者可以用继承控件新建-->WINDOWS控件库,把它编写好保存在工具栏右击,有个"选择项",然后在里面选择添加-找到你做好的控件添加进来就可以-以后工具栏上就有了.

VS2010,C#语言下,将用户自定义控件拖入设计页面时VS2010卡机了

问题描述 VS2010,C#语言下,将用户自定义控件拖入设计页面时VS2010卡机了,任务管理器显示正在运行,可以打开QQ,看网页都没有问题.只是VS2010卡着不动了. 解决方案 解决方案二:用户自定义控件中有错误吧解决方案三:自定义控件里面的变量定义的有color等特殊类型的是不是这个原因?解决方案四:看下初始化或重绘的方法是否实现了自定义逻辑,可以暂时把这部分代码注释掉解决方案五:换一台电脑看看,你的软件环境也许有问题.排除这个原因,就是你的控件本身有问题,比如构造函数本身陷入死循环了.解

Asp.net 动态加载用户自定义控件,并转换成HTML代码_实用技巧

如果页面单纯的使用js来创建,要写大量的代码,而且不直观. 在asp.net中,其实我们可以创建用户自定义控件,通过Ajax请求返回用户自定义控件HTML代码. 复制代码 代码如下: public static string RangerUsControl(string controlName) { StringBuilder build = new StringBuilder(); HtmlTextWriter htmlWriter = new HtmlTextWriter(new Strin

ASP.NET MVC 重点教程一周年版 第十一回 母版页、用户自定义控件及文件上传

母版页(Master) 1.母版页是与Controller无关的,母版页只是一个View文件,而没有任何Controller与之相对应. 2.其实在ASP.NET MVC中View的aspx与母版页并不像WebForm中那样紧密关联. 例如我想更换一个aspx的母版页,只要在Action中return 时指定所要使用的Master即可: 如图我有2个Master文件,而/Views/Home/Index.aspx则为 这时我们如果想要使用Site2做为Master,只要在Action中retur