【问题标题】:how to send an additional parameter for Telerik MVC [JQuery] event handlers如何为 Telerik MVC [JQuery] 事件处理程序发送附加参数
【发布时间】:2012-04-04 13:12:38
【问题描述】:

我现在是 jQuery 新手,我正在使用 Telerik asp.net MVC 控件和 Razor 视图引擎。这是我认为的代码sn-p。

    Html.Telerik().ComboBox().Name("cmb")                
    .AutoFill(true)
    .DataBinding(binding => binding.Ajax().Select("_loadData", "MyController").Cache(false))
    .ClientEvents(ce => ce.OnLoad("cmbLoaded"))

    function cmbLoaded(e) {            
        var ComboBox = $("#cmb").data("tComboBox");
        //do stuff here
    }

好的,这就是我想要做的我想向 Telerik Combobox 事件发送额外的参数,比如 cmbLoaded 事件处理程序。我怎样才能做到这一点。

提前致谢。

【问题讨论】:

    标签: javascript jquery asp.net-mvc jquery-ui telerik-mvc


    【解决方案1】:

    已经有一段时间了,但遇到了类似的情况。作为参数传递给 OnLoad 事件的字符串是 Javascript 函数引用,因此您可以传递如下内容:

    .ClientEvents(ce => ce.OnLoad("function(e) { cmbLoaded.call(this,e," + Model.Id + "); }"))
    

    那么您的 Javascript 函数签名将更改为:

    function cmbLoaded(e, id)
    

    【讨论】:

      【解决方案2】:

      当您的组合从服务器获取数据时,您想提交额外的参数吗? 然后您可以在OnDataBinding 事件的帮助下发送它。 例如:

      function onComboBoxDataBinding(e){
       e.data={extraParameter:"Cool"};
      }
      

      【讨论】:

      • 我想在 cmbLoaded 上发送额外的参数 .ClientEvents(ce => ce.OnLoad("cmbLoaded")) 我应该如何在这里传递它。
      • onLoad 不向服务器执行任何请求...它在客户端初始化组合时触发。
      • 我什至不想向服务器端发送任何东西,我从来没有说过。在这个问题上,我只关注客户端。我说的是为 Telerik 控件的 onLoad 事件向附加的事件处理程序发送额外的参数。它的所有客户端脚本。如果您无法回答,请务必阅读问题,然后不要浪费其他人的时间。
      【解决方案3】:

      您可以通过在代码块中定义一些变量来实现,然后在您的 javascript 事件处理程序中使用它们。这是一个例子:

      @{
         string myPar1 = "some text";
         int myPar2 = 10;
      }
      
      <script type="text/javascript">
      
      function cmbLoaded(e, '@myPar1' @myPar2) {            
              var ComboBox = $("#cmb").data("tComboBox");
              //do stuff here
          }
      
      </sciprt>
      

      【讨论】:

      • 似乎是一种解决方法,但只是想知道是否有任何方法可以在不本地声明变量的情况下发送控件的一些附加属性
      • 在事件处理程序中,您可以获取以某种方式附加到控件的任何数据。已定义 @(Html.Telerik().ComboBox().Name("name").HtmlAttribute(new { data_mydata="test"}))。内部处理程序: var cmp = $(this).data('tComboBox'); var myData = cmp.$wrapper.data('mydata');
      猜你喜欢
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多