服务器按钮回调事件。

网路查找,未经确实。

 

在ASP.NET中单击按钮回调本页面,不用ASP.NET的PostBack
2009-02-13 15:10

1.新建一个asp:Button ID='btn',将属性UseSubmitBehavior设置为false,这样HTML中解释的就是<input type="button">了

2.虽然如此,这个Button中的Onclick事件中还是有__doPostBack()函数,也就是说还是要由ASP.NET回调本页面,要想在这种情况下修改传入参数就不方便了。

3. 在代码页中加入btn.Attributes.Add("onclick", "Javascript:DoSomthing();//;");则可以注释掉__doPostBack()函数,使得单击按钮不会产生页面回调。

以上方法是放屁!

   最近,打算在UpdatePanel中使用FCKeditor时,发现了一个小问题:当点击Panel内的按钮进行AsynPostBack后,FCKeditor控件中先前所录入的内容便丢失了。
       在Google上查了下,发现了解决方法:
       1.首先在页面中添加如下JS脚本:
       <script language="javascript" type="text/javascript">
        // Some Class
        function MyClass()
        {
            this.UpdateEditorFormValue = function(val)
           {       
               for ( i = 0; i < parent.frames.length; ++i )
                        if ( parent.frames[i].FCK )
                        {    
                                parent.frames[i].FCK.UpdateLinkedField();
                        }

           }
       }
       // instantiate the class
      var MyObject = new MyClass();

     </script>

     2.在Page_Load事件中为Button的Click添加该JS方法:
      if (!IsPostBack)
      {
            lkbPost.Attributes.Add("onclick", "if (typeof(MyObject) != \'undefined\'){
                  MyObject.UpdateEditorFormValue(); return true;}else{return true;}");
        
       }
       
      3.另外,如果在FCKeditor控件中加入了图片等信息,需要将页面的ValidateRequest设置为false。完毕。

 

转载于:https://www.cnblogs.com/Fly-sky/archive/2009/04/08/1431465.html

<think>嗯,用户现在问的是“按钮事件回调机制是什么”。之前他们问过关于typedef函数指针的问题,现在转向事件回调,可能是在学习如何将函数指针应用到实际场景中,比如GUI编程或者嵌入式系统的按键处理。 首先,我需要确定用户的基础。他们可能已经理解了函数指针的概念,现在想了解如何用在实际的事件处理中。按钮事件回调机制通常涉及当用户按下按钮时,系统如何调用预先注册的函数。这可能涉及到回调函数的注册过程、事件循环,以及如何传递参数。 用户可能的实际应用场景可能是在开发一个带有用户界面的应用程序,或者是在处理硬件中断,比如嵌入式系统中的按钮。他们需要知道如何将之前学的函数指针typedef应用到事件处理中,确保当事件发生时,正确的回调函数被调用。 接下来,我需要解释回调机制的基本原理,即事件发生时系统调用预先注册的函数。要分步骤说明:事件发生、检测事件、查找注册的回调函数、执行回调。同时,需要结合之前的例子,比如用TaskCallback作为回调类型,注册到按钮事件中。 还要注意用户可能的疑问点,比如回调函数的参数传递,事件循环的工作方式,以及如何避免常见错误,比如在回调中执行长时间操作导致界面卡顿。可能用户没有提到这些,但作为补充说明会更有帮助。 需要给出一个具体的例子,比如在C语言中如何为按钮事件注册回调函数,使用之前定义的TaskCallback类型。这样用户能直观地看到之前的typedef如何应用到实际代码中,加强知识的连贯性。 此外,用户可能想知道为什么需要回调机制,而不是直接调用函数。这时候需要解释解耦的好处,事件源和处理的分离,提高代码的模块化和可维护性。 最后,总结回调机制的优势,并指出常见的使用场景,比如GUI、游戏、服务器等,帮助用户建立整体的认识。</think>--- **按钮事件回调机制**是编程中处理用户交互(如点击按钮)的核心模式。它通过**预先注册函数**,在事件触发时自动调用这些函数,实现“事件驱动”的逻辑响应。以下是详细解析: --- ### 一、核心概念 1. **事件(Event)** - 用户或系统触发的动作,如点击按钮、键盘输入、定时器到期等。 2. **回调函数(Callback)** - 开发者预先编写的函数,用于响应特定事件。例如点击按钮后要执行的逻辑。 3. **注册(Register)** - 将回调函数与事件绑定,告诉系统:“当这个事件发生时,调用我的函数”。 -- ### 二、运作流程 ```plaintext 按钮被点击(事件触发) ↓ 系统检测到事件 ↓ 查找与该事件关联的已注册回调函数 ↓ 执行回调函数(如更新界面、发送数据等) ``` -- ### 三、关键代码示例(C语言风格) ```c // 1. 定义回调函数类型(类似你之前问的typedef) typedef void (*ButtonClickCallback)(int buttonId); // 2. 按钮结构体(包含回调函数指针) typedef struct { int id; ButtonClickCallback onClick; // 点击事件回调 } Button; // 3. 注册回调函数 void registerClickHandler(Button* btn, ButtonClickCallback cb) { btn->onClick = cb; } // 4. 实际业务逻辑的回调函数 void handleLoginButtonClick(int buttonId) { printf("按钮 %d 被点击:执行登录验证\n", buttonId); } int main() { // 创建按钮实例 Button loginButton = {1, NULL}; // 注册回调(将函数指针赋值给按钮) registerClickHandler(&loginButton, handleLoginButtonClick); // 模拟按钮被点击(实际中由系统事件触发) if (loginButton.onClick) { loginButton.onClick(loginButton.id); // 输出:按钮 1 被点击:执行登录验证 } return 0; } ``` -- ### 四、机制优势 1. **解耦** - 按钮事件源)不关心具体业务逻辑,只需触发回调函数。 - 业务代码通过注册回调函数实现功能,无需修改按钮本身的代码。 2. **灵活性** - 同一按钮可动态切换不同的回调(如登录/注销状态切换)。 - 支持多个回调函数(通过链表或数组管理多个函数指针)。 3. **跨平台通用** - 原理适用于所有GUI框架(Qt、WinAPI)、Web(JavaScript事件监听)、嵌入式系统等。 --- ### 五、实际应用场景 1. **GUI开发** - 按钮点击、窗口拖拽、菜单选择等事件处理。 2. **游戏开发** - 玩家操作(移动/攻击)、碰撞检测触发回调。 3. **服务器编程** - 网络请求到达时触发数据处理回调。 --- ### 六、延伸:常见实现模式 1. **观察者模式** - 按钮作为被观察者,回调函数作为观察者。 2. **事件队列** - 系统将事件放入队列,主循环依次处理,避免回调阻塞。 3. **异步回调** - 用于耗时操作(如文件读取),完成后通过回调通知结果。 -- 通过这种机制,开发者只需关注“当事件发生时要做什么”,而不必关心事件如何检测和传递,极大提升了代码的可维护性和扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值