如何从jQuery调用Ajax控件事件

时间:2011-11-29 17:27:23

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

我正在使用一些使用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中看到警报消息。非常感谢有关如何使其发挥作用的任何指导。

由于 CSC

1 个答案:

答案 0 :(得分:0)

如果你遵循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();

调用事件。