【问题标题】:How do I Invoke Ajax OnClick from Provider Web Part to Consumer Web Part如何从提供者 Web 部件调用 Ajax OnClick 到消费者 Web 部件
【发布时间】:2008-12-29 14:26:43
【问题描述】:

我正在尝试通过在单独的 Web 部件上调用按钮 onclick 方法来管理 ajax 连接,以强制消费者进行部分回发。

Web 部件 A(提供者)调用 Web 部件 B(消费者)上的方法

网页 A 部分

类型 t = myButton.GetType(); 对象[] p = 新对象[1]; p[0] = EventArgs.Empty; MethodInfo m = t.GetMethod("OnClick", BindingFlags.NonPublic | BindingFlags.Instance); m.Invoke(myButton, p);

Web 部分 B

public void btnHidden_​​Click(对象发送者,EventArgs e) { Label1.Text = "隐藏按钮:" + DateTime.Now.ToString(); }

当我使用反射时,我得到了关于 HiddenButton 的正确信息。但是,我无法调用“OnClick”事件。 btnHidden_​​Click 不执行。当我从 WebPart B 调用到 WebPart B 时,它工作正常,但不是从不同的 webpart。

似乎没有太多关于此行为的信息。有什么建议吗?

谢谢。

罗伯

【问题讨论】:

    标签: ajax connection invoke


    【解决方案1】:

    由于 Web 部件应该尽可能松耦合,我将使用 Web 部件连接基础结构和订阅者模式来处理这个问题。

    连接部分之间的通信是通过接口完成的。该接口可以包括订阅和取消订阅方法。建立连接后,消费者部分可以订阅任何 UpdatePanel 控件,当提供者中的选定项目更改时,它需要更新。然后,当所选项目发生变化时,提供者部分可以遍历其订阅者并调用 UpdatePanel 上的 Update 方法以强制异步回发。

    我自己没有尝试过,但我能看到的唯一缺点是您可能必须对 Update 的调用进行排队,因为任何异步回发的触发都会取消当前正在进行的任何其他异步回发。

    我希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      使用 JavaScript 解决这个问题非常容易。我不想说 Web 部件不好(尽管我从未使用过它们),但我会说,如果你能够将最微小的 JS 编程到 Web 部件中,那么代码就是:

      document.getElementById('ElID').onclick();
      

      祝你好运!

      【讨论】:

        猜你喜欢
        • 2012-03-15
        • 2011-09-20
        • 2014-07-11
        • 2020-08-09
        • 2019-11-24
        • 2021-07-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多