2011-09-08 39 views
2

我需要一個Telerik MVC網格,它帶有一個組合框(在編輯模式下),該組合框根據每行中的條件進行填充。所以當我單擊編輯一行時,生成的組合框將包含與其他行中的轉換器組合框不同的項目。我想這行應按需加載,但我不知道如何在沒有編輯器模板的情況下在網格中創建組合框。看起來我不能將參數傳遞給編輯器模板。Telerik MVC Combobox基於網格的偏離行值?

這裏是這個用例: 想象一下,我有一個網格語言的翻譯器列表。在編輯每行時,翻譯器組合框將僅顯示該特定語言的翻譯器。所以法國人會有一個名字叫皮埃爾,弗朗索瓦和雅克的翻譯員組合框,但西班牙的名字會有如何,馬里奧和皮埃爾,因爲他會說法語和西班牙語。

有關如何使用Telerik MVC Grid和Combobox實現此目的的任何想法?

由於提前, 史蒂夫

UPDATE: 阿塔納斯, 任何機會,你可以提供一個工作的例子嗎?我收到錯誤。這是基於你的代碼我的javascript:

function TaskGrid_OnEdit(e) 
{ 
    var combobox = $(e.row).find("#ComboBoxId").data("tComboBox"); 
    //var values = getValuesForDataItem(e.dataItem); // get the values for the current data item  

    var values = 
     [ 
      { Text:"Product 1", Value:"1" }, 
      { Text:"Product 2", Value:"2" }, 
      { Text:"Product 3", Value:"3" }, 
     ]; 
    combobox.dataBind(values); // fill the combobox 
} 

下面是編輯模板,我不把它綁定到任何東西在這裏:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Model.Data.tblJobTask>" %> 

<%: Html.Telerik().DropDownListFor(s => s.SupplierID).Name("ComboBoxId") %> 

順便說一句,在你的編輯模板沒有按模型不映射到解決方案中的任何模型。應該將模型映射到您正在填充組合的數據還是映射到填充網格的列表的模型?

史蒂夫

回答

1

在網格中嵌入一個組合框,您可以檢查this代碼庫項目(只需更換一個組合框下拉列表中)。你仍然需要使用編輯器模板。 爲了使用特定於當前行的值填充組合框,可以使用網格的OnEdit事件。在那裏你可以使用它的dataBind方法(綁定它的客戶端)來設置組合框,或者調用它的reload方法來使用ajax來填充它。這裏是一些代碼:

function Grid_onEdit(e) { 
    var combobox = $(e.row).find("#ComboBoxId").data("tComboBox"); 
    var values = getValuesForDataItem(e.dataItem); // get the values for the current data item 
    combobox.dataBind(values); // fill the combobox 
} 
+0

阿塔納斯,感謝您的答覆,請參閱我上面的更新。我需要發佈更多的代碼,並且無法做到這些評論。 – SteveB

+0

問題是在網格內找到組合框。這不起作用:var combobox = $(e.row).find(「#ComboBoxId」)。data(「tComboBox」); – SteveB

+0

你說過combobox,但你正在使用一個下拉列表。在這種情況下,您需要$(e.row).find(「#ComboBoxId」)。data(「tDropDownList」)。你也不需要將id設置爲「ComboBoxId」,這僅僅是一個例子。將其保留爲DropDownListFor,然後使用「#SupplierID」。 –