1.为button控件添加确认功能

要想为服务器控件添加客户端的事件,需要用到Attributes属性。Attributes属性是所有的服务器控件都有的一个属性,它用来为最终生成的HTML添加自定义的一些标记。假设Web Form上有一个保存按钮btnSave,希望在用户点此按钮时提示用户是否确实要保存(比如一旦保存就无法恢复等),则应在Page_Load事件中添加如下代码:

1btnSave.Attributes.Add(“onclick”,“Javascript:return confirm(‘Are you sure tosave?’);”)

要注意的是‘return’,这是不可省的,否则即使用户点了取消,数据仍然会保存。

2.为Datagrid中的每一行添加Javascript事件

Datagrid中的子控件是没办法直接访问的,要实现上面的那种效果,我们需要用到Datagrid的OnItemDataBound事件。OnItemDataBound事件发生在Datagrid的每一行数据绑定到Datagrid之后(即一行激发一次)。首先在Datagrid的声明中添加OnItemDataBound属性,如下:

此处说明OnItemDataBound事件发生时调用ItemDataBound方法,在代码后置文件中添加此方法的定义:

private void OnItemDataBound(object sender,System.Web.UI.WebControls.DataGridItemEventArgs e)
{
        if(e.Item.ItemType != ListItemType.Header && e.Item.ItemType !=
ListItemType.Footer )
        {
            LinkButton btnSave = (LinkButton)e.Item.Cells[2].Controls[0];
            string strClientID = btnSave.ClientID;
            //得到该控件的客户端ID,可供JavaScript调用
            btnSave.Attributes.Add("onclick","Javascript:return confirm('Are you sure to save?');");
        }
}

由于Datagrid的标题行和脚注行也会激发此事件,所以首先判断激发此事件的行不是标题行和脚注行。这里假设btnSave按钮位于Datagrid的第3列(第一列是0)。

3.在Javascript中触发服务器端控件事件

让我们再来考虑第一个实例,我们为保存按钮增加了确认功能,只有在用户确认后才会执行保存操作,用户不确认的话就不执行,如果我们想要用户按下“取消”时,执行另外的操作怎么办呢?这就要需要用JS来回调(PostBack)服务器端控件完成操作。

当前页面中有一个DropDownList控件ddlTest,Button按钮btnSave.当选择ddlTest时触发onchange事件,保存当前的选择值,在保存前会让操作者先确认,用户确认则保存,否则转向default.aspx页。

在Page_Load事件中添加如下代码:

1string strCMD = Page.GetPostBackClientHyperlink( btnSave, "" );
2string script = @"Javascript:ConfirmUpdate(""EVAL_MESSAGE"");";
3script = script.Replace( "EVAL_MESSAGE" , strCMD );
4ddlTest.Attributes.Add("onchange",script);

这段代码执行后生成的select控件将是这样:

1select name="ddlTest" id="ddlTest" onchange="Javascript:ConfirmUpdate("javascript:__doPostBack('btnSave','')");" 〉

ConfirmUpdate函数如下

 1<SCRIPT language=javascript>
 2    function ConfirmUpdate(cmd){
 3    if(confirm("Are you sure to update?"))
 4   {
 5       eval(cmd);
 6    }
 7    else
 8    {
 9        window.location.href="default.aspx"
10    }
11   }
12</SCRIPT>这里利用了Javascript eval函数来调用一个字符串中包含的命令。需注意的是包含命令的字符串不能用单引号括起来,因为自动生成的脚本中包括单引号,所以这里用两个双引号表示字符串本身的双引号。  

为ASP.NET控件添加常用的JavaScript操作相关推荐

  1. ASP.NET 控件添加与不添加runat=server的作用及区别

    原文转载于:https://blog.csdn.net/being_towards_death/article/details/81117340?utm_source=blogxgwz0 1.runa ...

  2. asp.net控件开发基础系列

    本系列文章示例源码下载.各位如遇问题,请多查msdn,多利用网络.本人可能没时间一一回复,谢谢你们的支持,希望看到此文的人都能学好控件开发 http://www.cnblogs.com/Clingin ...

  3. 在asp.net中为Web用户控件添加属性和事件

    在90年代初,Microsoft为Web程序员提供的 Active Server Pages(ASP)革命性地改变了Web的编程.它可以利用十分易用的模型在Web服务器上动态生成HTML,并且很容易的 ...

  4. ASP.NET自定义控件组件开发 第三章 为控件添加事件 后篇

    第三章 为控件添加事件 后篇 前一篇文章只是简单的说了下事件,但是大家应该方法,在ASP.NET自定义控件中只是简单那么定义事件是行不 通.如果大家开发的是WinForm中的事件,之前的定义可能没有什 ...

  5. ASP.NET自定义控件组件开发 第三章 为控件添加事件 前篇

    第三章 为控件添加事件 好了,我们之前以前开发一个控件.而且也添加了属性,开发也很规范,但是那个控件还差最后一点:添加事件. 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.N ...

  6. 金蝶EAS DEP脚本(5)给常用控件添加值改变事件

    给常用控件添加事件 一.F7 给F7添加值改变事件 //F7控件增加值改变监听 pluginCtx.getKDBizPromptBox("prmtCompany").addData ...

  7. Asp.net控件开发学习笔记(三)-控件开发基础

    封装      在asp.net中,控件被分为两类.用户控件和自定义服务器控件.前者就是我们经常用来将一些可复用的内容封装成的.ascx文件.这里主要研究后者. 创建自定义服务器控件      创建自 ...

  8. 使用 ASP+ DataGrid 控件来创建主视图/详细资料视图

    Nikhil Kothari Microsoft Corporation 2000年8月 简介 Microsoft® Visual Studio.NET 的下一发行版包括 DataGrid Web 控 ...

  9. 【转】Asp.net控件开发学习笔记整理篇 - WebControl基类

    最近一直在做MVC项目,对于WEBFORM 好像快忘记了.周末无聊,顺带看看他人的笔记.再次温习下. 复习大纲: 导航.页面生命周期及其它导论 一.服务器控件生命周期 二.控件开发基础 三.Asp.n ...

最新文章

  1. 2021年大数据Flink(十五):流批一体API Connectors ​​​​​​​Kafka
  2. switch case 支持的 6 种数据类型!
  3. 敏捷开发-Scrum与精益相得益彰
  4. 使用Silverlight for Embedded开发绚丽的界面(4)
  5. java多对多关联数据操作,hibernate实施多对多关联查询时,关联表数据被删除
  6. 项目经理原则(转载)
  7. SAP FI新手常用代码
  8. Mac os下安装brew
  9. sql server代码创建数据库详细过程
  10. typedef struct LNode *p和typedef struct LNode笔记
  11. SIFI和ORB在尺度缩放、旋转、仿射上的特征点不变实验代码,并比较SIFI和ORB提取特征点的速度
  12. 怎么给计算机上锁键盘,想把笔记本电脑的键盘锁住,用外置键盘怎样做?
  13. 可视化 | 人物画像的设计方法
  14. 服务器虚拟化后有几个io地址,CPU虚拟化,内存虚拟化和IO虚拟化
  15. YY频道美化,模板修改工具【免费】可以闪动
  16. 跨交换机实现VLAN实验
  17. php中hr标签的用法,HTML: hr 标签
  18. 【联盛德W806上手笔记】六、7816/UART 控制器
  19. 算法竞赛专题解析(0)--写作计划
  20. 快速搭建一个本地的FTP服务器

热门文章

  1. 对象特性-构造函数和析构函数
  2. c语言程序中变量先引用声明,C语言如何跨文件调用函数定义中声明的变量
  3. opencv学习笔记(二)
  4. 读自动驾驶激光雷达物体检测技术(Lidar Obstacle Detection)(1):Stream PCD流式载入激光点云数据
  5. Python Qt GUI设计:QCalendar日历类和QDateTimeEdit时间类(基础篇—20)
  6. Atom:Uncaught TypeError: Right-hand side of 'instanceof' is not callable(markdown-scroll-sync)
  7. uint8_t uint16_t uint32_t uint64_t 解析
  8. CUDA硬件架构知识
  9. ceph bluestore 源码分析:刷缓存(trim)逻辑
  10. 编译ceph源码:cython module not found问题的解决