在微软的ajax实现中,一部分是服务端的,也是核心部分,用于控制整个请求的周期。这部分是与原服务器控件结合最紧密的。这部分会托管控件的请求事件。

而另一部分是在前一部分进行扩展的,虽然有些会使用异步与服务器通信,但是更多的部分则是纯客户端脚本的封装。这一部分能大大增强我们的客户端体验。

从 生成的代码中我们也可以看出,如果是ajax服务器控件生成的一个有异步通信功能的代码,并没有在触发这个事件的按钮或者链接上更改任何的代码,还是原来 的__doPostBack('','')回发方式。ajax核心部分会托管这个__doPostBack。而对于ajax control toolkit,则是在初始化真个客户端页面时执行一段代码然后动态的给绑定的控件加入触发的代码。所以你也看不到例如一个LinkButton触发事件 的变化。

昨天为一个页面添加一个ajax,在点击一个“编辑CSS”的LinkButton后,弹出一个 ModalPopupExtender定义的一个Panel,然后从服务端或者CSS内容,填充这个模态对话框中的一个TextBox。所以这里的 LinkButton要完成两个动作:弹出模态框和触发服务器事件。

这出现了一个矛盾,如果你的LinkButton同时有一个异步请求 的事件,同时也绑定了例如ModalPopupExtender这样的控件,那么你这个LinkButton会响应ModalPopup,如你所料的弹出 一个模态框,但是你想回发服务器并异步或者数据的想法并没有实现,因为这个LinkButton的href已经不是你看到的__doPostBack这样 的方法了,所以这个能看得到的__doPostBack根本不会被执行。有什么办法可以解决呢?我们首要的问题是要点击这个LinkButton时能够触 发LinkButton的这个__doPostBack,而LinkButton的href在客户端初始化时会被替换,所以我们不能在href这里下手。 很自然的我们想到onclick这个事件,经过实验我们可以发现LinkButton的onclick并不会被客户端修改。那么要触发这个 LinkButton的__doPostBack也是轻而易举了。我们只需在服务端的Page_Load中加入这个LinkButton的 OnClientClick:

editCssBtn.OnClientClick = "__doPostBack('" + this.editCssBtn.UniqueID + "','')";

简单的一句就实现了服务器事件的触发,这样LinkButton就可以兼做二用了。

上面的描述是我在实现时体会的,可能不一定对,大家多多包涵。同时是不是可以直接设置的因为时间匆忙我就没有研究了。欢迎大家指出。

转载于:https://www.cnblogs.com/sgwz850/articles/1439018.html

让ModalPopupExtender的控制控件能响应服务器事件相关推荐

  1. MFC中picture控件如何响应鼠标移动?

    MFC中picture控件如何响应鼠标移动? 2011-08-21 21:23 轻若惊鸿 | 浏览 3354 次 硬件网络 我将一个picture控件的属性中的Notify勾上了,但是只能响应鼠标按键 ...

  2. UI控件无法响应点击等事件的探索

    2019独角兽企业重金招聘Python工程师标准>>> UI控件无法响应点击等事件的探索 一.响应者链 关于响应者链,有如下一段介绍:每一个应用有一个响应者链,我们的视图结构是一个N ...

  3. MFC动态创建控件并响应事件代码实现过程

    MFC动态创建控件以及响应动态创建的控件的事件的实现方法如下. 1.创建对象     用new进行动态创建一个对象.然后调用Create函数创建窗口,在函数的父窗口参数中传入this或者用AfxGet ...

  4. MFC vc++ 中CTreeContrl如何自定义实现鼠标单击或双击响应事件 ,即重写类似于控件的响应事件或消息

    代码部分摘录自"天上的猩猩的专栏":https://blog.csdn.net/qq_23992597/article/details/51006920#commentsedit ...

  5. QT实现控件不响应鼠标点击事件

    QT中很多控件都有鼠标点击的事件响应,比如QPushButton,QRadioButton.有时候我们想要实现的是:当鼠标点击控件时,不会产生响应事件.其中的一种方法是使用Qt::WA_Transpa ...

  6. 手势控制控件 的缩放,平移和旋转:

    手势控制控件的缩放,平移和旋转: mapView是要移动的控件,TouchLayout是手势控制的区域,具体代码如下: touchLayout.setOnTouchListener(new Touch ...

  7. c# 多线程实现ping 多线程控制控件

    这个备份器放在项目目录下面,每次使用就双击一下,因为便捷性,就不采用xml等等储存信息,全部在面板内做,这样可以保证一个exe就运行了. 我发现运行起来还蛮快的,唯一没有实现的是ping通的电脑如果出 ...

  8. vs2005的webbrowser控件如何接收鼠标事件

    这个问题来自论坛提问,vs2005的webbrowser控件如何接收鼠标事件,很多事情其实自己动动脑子就有办法的.主要是3步,给dom对象插入js脚本去响应鼠标-〉通过url跳转去通知webbrows ...

  9. WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探

    原文:WPF中自定义的DataTemplate中的控件,在Window_Loaded事件中加载机制初探 最近因为项目需要,开始学习如何使用WPF开发桌面程序.使用WPF一段时间之后,感觉WPF的开发思 ...

最新文章

  1. Tools and Strategies for Long-Read Sequencing and De Novo Assembly of Plant Genomes
  2. org.springframework.security.web.util.TextEscapeUtils
  3. mysql与配偶同性_mysql 左,右,内连接
  4. ubuntu登陆后一闪回到登陆界面
  5. mysql 表 地图_报表中的地图怎么做?
  6. atitit.提升开发效率---mda 软件开发方式的革命
  7. 【数据库系统】文件处理系统和DBMS的主要区别
  8. 支付宝又要改版了:首页顶栏新增了这个模块
  9. AndroidStudio安卓原生开发_android中使用StringUtils类_引入commons-lang的jar---Android原生开发工作笔记132
  10. 爬虫笔记1-Requests库的基本方法
  11. 设计模式之组合模式——Java语言描述
  12. 在VS Code中用插件记录写代码时间
  13. 禁忌搜索算法求解 TSP 问题的代码示例
  14. python拼音识别多音字的包_一个有意思还有用的Python包-汉字转换拼音
  15. win10安装Visual Studio2019时卡在了提取文件处
  16. vue 动态生成拓扑图
  17. JavaEE-常用API(String、ArrayLis)
  18. Mac应用程序无法打开提示不明开发者?别着急看这里
  19. 禁用ngnix的空主机头
  20. 项立刚:FDD牌照发放 难改行业大格局

热门文章

  1. python累积和_python – 如何维持累积总和?
  2. 全民大乐斗场服务器状态,看到最近很多人问重修,**说一下这个问题
  3. java 传递函数_java传递函数参数(值传递)
  4. 张国栋 linux进程,张国栋(栋梁)造价定额设计:BIM技术应用于装配式建筑的优势...
  5. axios vue 加载效果动画_在vue中通过axios异步使用echarts
  6. sklearn 学习曲线Learning Curve和 validation_curve
  7. 深入理解javascript原型和闭包(1)——一切都是对象
  8. 终于可以摆脱 Pipenv 这坑货了
  9. mysql主从克隆服务器_mysql主从复制服务器配置
  10. git图文工具_全网最详细的Windows里Git client客户端管理工具SourceTree的下载与安装(图文详解)...