ASP.NET自定义Web服务器控件之Button控件

本文实例讲述了ASP.NET自定义Web服务器控件之Button控件实现方法。分享给大家供大家参考。具体实现方法如下:

代码如下:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Linq; 
using System.Text; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
 
//自定义web服务器button 
namespace MyControls 

    [DefaultProperty("Text")] 
    [ToolboxData("<{0}:MyButton runat=server></{0}:MyButton>")] 
    public class MyButton : WebControl,IPostBackEventHandler 
    { 
        [Bindable(true)] 
        [Category("Appearance")] 
        [DefaultValue("")] 
        [Localizable(true)] 
        public string Text 
        { 
            get 
            { 
                String s = (String)ViewState["Text"]; 
                return ((s == null) ? String.Empty : s); 
            } 
 
            set 
            { 
                ViewState["Text"] = value; 
            } 
        } 
 
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]//生成属性时,按属性内部内容生成(例如在此控件里面(Size-Height,Size_Width)) 
        //[PersistenceMode(PersistenceMode.InnerProperty)]//以子标签的形式显示(例如<Size Width="" Height=""/>) 
        public Size Size 
        { 
            get 
            { 
                if (ViewState["Size"] == null) { 
                    ViewState["Size"] = new Size(); 
                } 
                return (Size)ViewState["Size"]; 
            } 
 
            set 
            { 
                ViewState["Size"] = value; 
            } 
        } 
        //定义控件的标签形式 
        protected override HtmlTextWriterTag TagKey 
        { 
            get 
            { 
                return HtmlTextWriterTag.Input; 
            } 
        } 
 
        //初始化 
        protected override void OnInit(EventArgs e) 
        { 
            this.Style.Add("width", Size.Width + "px"); 
            this.Style.Add("height", Size.Height + "px"); 
            this.Attributes.Add("type", "submit"); //提交按钮 
            this.Attributes.Add("value",Text); 
            this.Attributes.Add("name",this.UniqueID);//回发事件必须有的一个属性 
            base.OnInit(e); 
        } 
        //打印当前控件的内容 
        protected override void RenderContents(HtmlTextWriter output) 
        { 
            //output.Write(Text); 
        } 
         
        public delegate void ClickHandle(); 
        private object key=new object(); 
        public event ClickHandle Click { 
            add { 
                this.Events.AddHandler(key,value); 
            } 
            remove { 
                this.Events.RemoveHandler(key, value); 
            } 
        } 
        //按钮的回发事件 
        public void RaisePostBackEvent(string eventArgument) 
        { 
            ClickHandle handle = (ClickHandle)base.Events[key]; 
            if (handle != null) { 
                handle(); 
            } 
        } 
    } 
}

代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 
 
<%@ Register assembly="MyControls" namespace="MyControls" tagprefix="cc1" %> 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
    <!--自定义服务器按钮控件--> 
        <cc1:MyButton ID="MyButton1" Size-Height="30" Size-Width="290" OnClick="btnSubmit" Text="我是一个单独的提交按钮(自定义服务器)" runat="server" /> 
    </div> 
  
     
    </form> 
 
</body> 
</html>

代码如下:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
 
public partial class _Default : System.Web.UI.Page 

    protected void Page_Load(object sender, EventArgs e) 
    { 
 
    } 
    //自定义服务器控件 
    protected void btnSubmit() { 
        Response.Write("我是自定义服务器控件的点击事件"); 
    } 
}

希望本文所述对大家的asp.net程序设计有所帮助。

时间: 2014-11-24

jQuery生成asp.net服务器控件的代码

HTML如下 复制代码 代码如下: <tr> <td class="leftTd" style="width: 107px">附加金额</td> <td style="width: 315px"><asp:TextBox ID="txtExtendMoney" Text="0" runat="server"></asp:T

ASP.NET 动态写入服务器端控件第1/2页

关于动态写入html标签控件,大家都熟悉,这里就不再表述.本文讨论的重点是:如何动态写入服务器端控件,并且在页面PostBack到Server端时,在Server端来获取被动态写入的服务器端控件的各种属性. 这里,我来通过一个Demo来说明这个应用. 需求: 1. 用户在UI上输入一个数值(比如:5),系统动态为用户加载这个数值的Url Address输入域; 2. 用户输入的Url Address内容需要通过Url格式验证; 3. 用户提交输入内容后,系统给出提交的结果 设计如下: 1. Cs

ASP.NET服务器端控件RadioButtonList,DropDownList,CheckBoxList的取值、赋值用法

这三个控件都有一个Items集合,可以用 RepeatLayout 和 RepeatDirection 属性来控制列表的呈现形式.如果 RepeatLayout 的值为 Table,那么将在表中呈现列表.如果设置成 Flow,那么将在没有任何表结构的情况下呈现列表.默认情况下,RepeatDirection 的值为 Vertical.将此属性设置成 Horizontal 将会使列表水平呈现. RadioButtonList:控件提供已选中一个选项的单项选择列表(数据源单选).与其他列表控件相似,

asp.net Page.Controls对象(找到所有服务器控件)

实例一: 前台 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w

asp.net 服务器控件的 ID,ClientID,UniqueID 的区别

1.简述 ID是设计的时候自己所指定的ID,是我们分配给服务器控件的编程标识符,我们常常使用this.controlid来寻找控件,那么这个controlid就是这里所说的ID. ClientID是由ASP.Net生成的服务器控件得客户端标识符,当这个控件生成到客户端页面的时候,在客户端代码访问该控件时就需要通过ClientID来访问. UniqueID 服务器控件的唯一的.分层的形式限定的标识符. 是当需要参与服务端回传的时候用的.当将控件放置到重复控件(Repeater.DataList和D

asp.net Page.EnableEventValidation 属性验证服务器控件的回发和回调事件出现的错误

本以为页面很简单不会出现问题,但运行时出现了如下错误: Page.EnableEventValidation 属性 参看了一下MSDN,获取或设置一个值,该值指示页面验证回发事件,还是验证回调事件..NET Framework出于安全考虑需要为服务器端控件的回发和回调事件进行注册,此事件验证机制可消除未经授权的回发请求和回调带来的风险.通过此模型,控件可在呈现期间注册其事件,然后在回发或回调期间验证这些事件.默认情况下,ASP.NET 中的所有事件驱动控件均使用此功能. 第一反应,既然启用了事件

asp.net下使用Request.From获取非服务器控件的值的方法

复制代码 代码如下: <tr> <td>登录名:<input id="Text1" type="text" name="loginName" /><asp:Label ID="Label1" runat="server" Text="用户名已经存在"></asp:Label> </td> </tr> &l

Asp.Net使用服务器控件Image/ImageButton显示本地图片的方法

Image/ImageButton服务器控件显示本地的图片 . 这里,我做的是: 数据库中存放了图片的相对地址,读取数据库中的地址,用控件加载显示图片.  步骤: A .添加服务器控件, 这里以 Image控件为例. B. 数据库中的路径,这个很重要.  格式我是这样写的: ~/image/1.jpg. 我之前写的是: ~\image\1.jpg,图片显示加载失败,换了'\'后,就可以了. image是我在项目的主目录下创建的一个特地存放图片的文件夹. C.添加代码. 使用image的image

jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值

-.获取dropdownlist的text(ddlList为服务器端dropdownlist的ID,生成name属性等于ddlList的select标签) $("#ddlList option:selected").text() 二.获取dropdownlist的value(ddlList为服务器端dropdownlist的ID,生成name属性等于ddlList的select标签) $("#ddlList").val() 三.获取radiobuttonlist的t

JS或jQuery获取ASP.NET服务器控件ID的方法

在ASP.NET中使用js时,js获取DOM元素时,经常获取不到,这是因为获取的方法有误,现在介绍一方法,解决如何使用js获取ASP.NET控件在浏览器端生成html标签对应的id 1.获取服务器端控件在浏览器端生成的标签的id,即服务器控件对应的客户端html标签id 通过服务器端控件的ClientID属性可以获取到相应在浏览器即客户端html标签中对应的id值,获取方法如下 代码如下: 复制代码 代码如下: <%= newsId.ClientID %> 2.通过dom获取相应的dom元素

jquery dialog open后,服务器端控件失效的快速解决方法

jquery dialog为我们提供了非常漂亮实用的对话框,比单调的alert.confirm.prompt好用很多. 在使用jquery与.net共同开发时,直接调用jquery dialog的open后,服务器端控件全部失效了,不能执行相应的后台代码.只是源于jquery默认把dialog添加到body中,而不是原来所在的服务器端的form中了 解决方法: 1.可以调用dialog的open前,$("#dialog").parent().appendTo("form:fi

asp.net fileupload控件上传文件与多文件上传

1.前台文件 Default.aspx: <%@ Page Language="C#" AutoEventWireup="true"CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.

asp.net GridView控件中实现全选的解决方案

第一种:利用客户端控件实现 JS: 复制代码 代码如下: <script type="text/javascript"> function checkAll() { var checklist=document.getElementsByTagName("input"); for(var i=0;i<checklist.length;i++) { if(checklist[i].type=="checkbox") { check

asp.net fileupload控件上传图片并预览图片

本文为大家分享了fileupload控件实现上传图片后并进行预览图片的功能,并对web.config进行了配置,先看一下最终效果: 页面代码: <form id="form1" runat="server"> <div> <asp:FileUpload ID="FileUpload1" runat="server" /> <asp:Button ID="Button1&quo

ASP.NET数据绑定控件详解

ListBox.GridView.Repeater这三个数据绑定控件的"高效分页",ListBox和GridView内置的有分页,但是其效率太低了,少量的数据还可以,大量的数据根本就没法用,Repeater控件本身不提供分页,但是在实际的开发中可能也会有用到分页,所以也会给大家讲一下,Repeater的分页. 好了,现在开始进入正题,先从比较常用的控件说起. 一.GridView控件 主要特点:支持删.改,排序.分页.外观设置.自定义显示数据 缺 点:影响程序性能.不支持插入操作 这个

asp.net分页控件使用详解【附实例下载】

一.说明 AspNetPager.dll这个分页控件主要用于asp.net webform网站,现将整理代码如下 二.代码 1.首先在测试页面Default.aspx页面添加引用 <%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %> 2.写一个Repeater列表控件用于显示数据 <asp:Repeater ID