当前位置: 首页 > news >正文

委托(delegate)实现自定义控件的AutoPostBack功能

  项目中用到ajax:

<asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>

 

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
                                <ContentTemplate>
                                    <asp:HiddenField runat="server" ID="HiddenField_CarNo"></asp:HiddenField>
                                </ContentTemplate>
                                <Triggers>
                                    <asp:AsyncPostBackTrigger ControlID="Identification" />
                                    <asp:AsyncPostBackTrigger ControlID="ddlID" />
                                    <asp:AsyncPostBackTrigger ControlID="ddlLicense" />
                                </Triggers>
                            </asp:UpdatePanel>

  其中有自定义控件ddlID包括DropDownList和TextBox。遂利用delegate设置自定义控件的autopostback功能。

  控件页面代码如下:

<asp:DropDownList id="cbb_License" runat="server" Width="80px" AppendDataBoundItems="true" OnSelectedIndexChanged="LicenseTextChanged">
<asp:ListItem Text="请选择" Value="00000000-0000-0000-0000-000000000000">
</asp:ListItem>
</asp:DropDownList>
<asp:TextBox id="txt_License" runat="server" Width="48px" MaxLength="5"  OnTextChanged="LicenseTextChanged"></asp:TextBox>
 


  两个用户控件都加了事件LicenseTextChanged。

  控件后台代码如下:

 public delegate void LicensePlateChangedEnventHandler(object sender, EventArgs args);

        public event LicensePlateChangedEnventHandler LicensePlateChanged;//委托定义

        protected void LicenseTextChanged(object sender, EventArgs e) {


            RaiseEvent(sender, e);
        }//时间定义


        private void RaiseEvent(object sender, EventArgs e) {
            if (LicensePlateChanged != null) {
                LicensePlateChanged(sender, e);
            }
        }//关联委托

  在主页面调用的时候只要在控件上加上属性OnLicensePlateChanged=“要响应事件”即可。

 

   关于委托的的原理和一些用法,可以再园子里找到很多经典文章,例如把委托说透,从.NET中委托写法的演变谈开去(上):委托与匿名方法,等等很多。有兴趣可以仔细研读!!!!

 

转载于:https://www.cnblogs.com/Fibo/archive/2011/12/07/2279648.html

相关文章:

  • 啤酒游戏的牛鞭效应分析之供应链4层模式
  • 基于Eclipse的Hadoop应用开发环境配置
  • 特殊字符保存到SQL数据库的问题
  • 博客~希望给我一个新的天地,学习,工作,生活,情感~
  • 啤酒游戏的牛鞭效应之VMI策略减弱
  • 2012放假明细
  • ubuntu 10.04 3D特效设置(包含缺失的动画)
  • 使用织梦cms5.5出现栏目无法更改怎么解决?
  • 刷新本地电脑上的 DNS 信息
  • 雨林木风 Ylmf OS 3.0正式版发布 基于Ubuntu 10.04
  • Redhat 中裸设备(raw) 的配置和oracle中使用
  • JSP学习——怎样为没有JSTL的项目加上jstl标签库
  • 常量like数据库表中的列
  • OGC标准介绍 11
  • javascript 对象基础定义类或对象(1)
  • 收藏网友的 源程序下载网
  • 自己简单写的 事件订阅机制
  • $translatePartialLoader加载失败及解决方式
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • Javascript 原型链
  • JavaScript类型识别
  • MobX
  • php面试题 汇集2
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Spring Cloud中负载均衡器概览
  • Twitter赢在开放,三年创造奇迹
  • vue-router 实现分析
  • 离散点最小(凸)包围边界查找
  • 三栏布局总结
  • 使用 @font-face
  • 线性表及其算法(java实现)
  • Prometheus VS InfluxDB
  • !!Dom4j 学习笔记
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (2)Java 简介
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (二)hibernate配置管理
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (九)c52学习之旅-定时器
  • (转)setTimeout 和 setInterval 的区别
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .net Application的目录
  • .net CHARTING图表控件下载地址
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NET 使用配置文件
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • @RunWith注解作用
  • []新浪博客如何插入代码(其他博客应该也可以)
  • [Angular 基础] - 指令(directives)
  • [C/C++]数据结构 深入挖掘环形链表问题
  • [Foreman]解决Unable to find internal system admin account
  • [Fri 26 Jun 2015 ~ Thu 2 Jul 2015] Deep Learning in arxiv