【问题标题】:how to call a Ajax control event from jQuery如何从 jQuery 调用 Ajax 控件事件
【发布时间】:2011-11-29 17:27:23
【问题描述】:

我正在使用一些使用 microsoft ajax 工具包编写的控件。我想使用 jQuery 在这些控件中触发一个事件。我希望它应该像从 jQuery 触发任何事件一样简单,但它似乎不起作用。这是示例代码..

Ajax 控件

/// <reference name="MicrosoftAjax.js"/>

Type.registerNamespace("MyNameSpace");

MyNameSpace.AjaxUserControl = function(element) {
  MyNameSpace.AjaxUserControl.initializeBase(this, [element]);
}

MyNameSpace.AjaxUserControl.prototype = {
  initialize: function() {
  MyNameSpace.AjaxUserControl.callBaseMethod(this, 'initialize');
  }
},

dispose: function() {

  MyNameSpace.AjaxUserControl.callBaseMethod(this, 'dispose');
},

_onChange: function(evt) {
  alert('On Change event.');
  },
}
if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();

jQuery 代码:

var myJqueryControl = (function ($, AjaxControl) {
  $(document).ready(function(){
  var ajaxEventProxy = Function.createDelegate(AjaxControl, AjaxControl._onChange);
  $("#JqueryCommandButton").click(ajaxEventProxy);
} (jQuery,MyNameSpace.AjaxUserControl));

它不起作用,当单击按钮时,我在 onchange 中看不到警报消息。希望能提供有关如何使其工作的任何指导。

谢谢 中控中心

【问题讨论】:

  • 停止使用微软蹩脚的ajax库和ajax控制工具包! :)
  • 我正在尝试..我不喜欢它但必须支持旧代码:(

标签: c# asp.net .net jquery asp.net-ajax


【解决方案1】:

如果您关注JQuery widget pattern,它会更容易工作。因为 AJAX 控件包裹着一个元素,就像小部件一样,您可以通过使用 init 方法编写一些设置来更轻松地将两者集成:

_init: function() {
    //store a control reference within the widget
    this._control = $find(this.element.attr("id"));
}

然后,在您的小部件中,您可以通过this._control 引用控件。

如果不能切换模型,解决这个问题的方法不是直接引用类型,而是实例...而不是把引用MyNameSpace.AjaxUserControl传递给构造函数,传入一个实例,然后你可以做到:

instance._onchange();

调用事件。

【讨论】:

  • 非常感谢布赖恩。信息量很大。我会尝试你的建议。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-18
  • 2013-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多