2013-07-30 121 views
3

我在我的kendo網格中有一個外鍵,並且我爲這個外鍵創建了一個編輯器。它工作正常保存,但問題是,當網格顯示數據時,外鍵值是未定義的。我知道我必須更改模板以顯示正確的值。我添加了功能intemplate以顯示正確的值,但它不適用於我。Kendo Grid外鍵模板

你能幫助我嗎?這裏是我的代碼:

var collection; 

$("#mygrid").kendoGrid({ 
    dataSource: dataSource, 
    pageable: true, 
    toolbar: [{ name: 'create', text: 'My create' }], 
    columns: [ 
     { field: "ForeignKeyColumn", editor: categoryDropDownEditor, template: "#=getTextByValue(data)#" }, 
     { field: "NOTES", title: "Notes" }, 
     { command: ["edit", "destroy"], title: " ", width: "160px" }], 
    editable: "popup",      
}); 

//update model when choose value from dropdown list 
var grid = $("#mygrid").data("kendoGrid"); 
grid.bind("save", grid_save); 
function grid_save(e) { 

    if (e.model.ForeignKey) { 

     //change the model value 
     e.model.ForeignKeyColumn = 0; 
     //get the currently selected value from the DDL 
     var currentlySelectedValue = $(e.container.find("#typeCombo")[0]).data().kendoDropDownList.value(); 
     //set the value to the model 
     e.model.set('ForeignKeyColumn', currentlySelectedValue);    
    } 
} 

//Editor template 
function categoryDropDownEditor(container, options) { 
    $('<input id="typeCombo" required data-text-field="text" data-value-field="value" data-bind="value:' + options.field + '"/>') 
     .appendTo(container) 
     .kendoDropDownList({ 
      autoBind: true, 
      dataSource: { 
       type: "json", 
       transport: { 
        read: { 
         url: '@Url.Action("SomeAction", "SomeController")', 
         type: "POST", 
         contentType: "application/json", 
        } 
       } 
      } 
     }); 
} 

//Show template 
function getTextByValue(data) { 
    //if the collection is empty - get it from the grid 
    if (!collection) { 
     grid = $("#GridName").data("kendoGrid"); 
     valuesCollection = grid.options.columns[1].values;//Set the correct FKColumn index 
     collection = {};   
     for (var value in valuesCollection) { 
      collection[valuesCollection[value].value] = valuesCollection[value].text; 
     } 
    } 
    return collection[data.ForeignKeyColumn]; 
} 

注:當我跟蹤valuesCollection值不確定。

+0

你有沒有嘗試在EditorTemplates打造 「GridForeignKey」? –

+0

不,有用的鏈接? – Besher

回答

3

試試這個,

我認爲它在網格結合外鍵列必要的。請不要chagne .chtml查看名稱和Forlder名稱。

存放在下面的位置。 地點: - YourViews - >粉碎 - > EditorTemplates - > GridForeignKey.cshtml

GridForeignKey.cshtml 
@(
Html.Kendo().DropDownListFor(m => m) 
     .Name(ViewData.TemplateInfo.GetFullHtmlFieldName("")) 
     .BindTo((SelectList)ViewData[ViewData.TemplateInfo.GetFullHtmlFieldName("") + "_Data"]) 
      .OptionLabel("--Not Category--")  
) 
+0

如果您已將選項標籤傳遞給外鍵定義,則在此不需要它。 謝謝。我幾乎整天都在抨擊我的頭腦。 –

+0

如果我想要一個不通用的選項標籤,如何將其傳遞給GridForeignKey? –