2012-04-04 20 views
1

我是jQuery的新手,現在我使用Telerik asp.net MVC控件和Razor視圖引擎。這是我的觀點中的代碼片段。如何爲Telerik MVC發送附加參數[JQuery]事件處理程序

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的組合框事件cmbLoaded事件處理程序。我怎樣才能做到這一點。

在此先感謝。

回答

2

當你的組合從服務器獲取數據時,你想提交額外的參數嗎? 然後你可以在OnDataBinding事件的幫助下發送它。 例如:

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

+0

我想送cmbLoaded上的額外參數 .ClientEvents(ce => ce.OnLoad(「cmbLoaded」)) 我應該如何通過它。 – afr0 2012-04-04 13:57:29

+0

onLoad不會對服務器執行任何請求......它會在客戶端初始化組合套件時觸發。 – 2012-04-06 18:10:22

+0

我甚至不想發送任何東西到服務器端,我從來沒有說過。在這個問題上,我只關注客戶端。我正在討論將附加參數發送到附加的事件處理程序中用於telerik控件的onLoad事件。它的所有客戶端腳本。 如果你不能回答,請不要閱讀,否則不要浪費別人的時間。 – afr0 2012-04-17 12:18:58

0

您可以通過在代碼塊中定義一些變量,然後在您的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> 
+0

似乎是一種解決方法,但只是想知道是否有任何方式發送控件的某些其他屬性,而無需在本地聲明變量 – afr0 2012-04-23 11:53:54

+0

在事件處理函數內部,您可以獲取任何與控件相關的數據。定義了@(Html.Telerik()。ComboBox()。Name(「name」)。HtmlAttribute(new {data_mydata =「test」}))。內部處理程序:var cmp = $(this).data('tComboBox'); var myData = cmp。$ wrapper.data('mydata'); – Rustam 2012-07-13 20:37:59

+0

感謝隊友我會盡快更新你的。 – afr0 2012-07-19 08:00:25

2

它已經有一段時間了,但遇到了類似的情況。你作爲參數傳遞給OnLoad事件的字符串是一個JavaScript函數引用,這樣你就可以通過類似:

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

那麼你的JavaScript函數簽名將變爲:

function cmbLoaded(e, id) 
相關問題