2016-02-08 42 views
1

我想將可編輯的kendo網格作爲局部視圖控件在需要時多次使用。在MVC的局部視圖中製作可編輯的Kendo網格

我有多地址的客戶和員工 所以我想在部分視圖中爲地址製作可編輯的劍道網格,以便在員工和客戶中使用它。

我的劍道電網局部視圖是

@model AddressesModel 
@using Kendo.Mvc.UI 


@{ 
    var prefix = ViewData.TemplateInfo.HtmlFieldPrefix; 
    var propertyPrefixName = ""; 
    if (string.IsNullOrEmpty(prefix)) 
    { 
     propertyPrefixName = nameof(AddressesModel.AddressesList); 
    } 
    else 
    { 
     propertyPrefixName = prefix + "." + nameof(AddressesModel.AddressesList); 
    } 
    var cityId = nameof(AddressModel.CityId); 
    var email = nameof(AddressModel.Email); 

} 

@(Html.Kendo().Grid(Model.AddressesList) 
       .Name("AddressGrid") 
       .ToolBar(tools => tools.Create().Text(GlobalResources.Add)) 
       .Editable(editable 
       => editable.Mode(GridEditMode.InCell).CreateAt(GridInsertRowPosition.Bottom)) 
       .Columns(columns => 
       { 


        columns.Bound(p => p.CityId).ClientTemplate("#= " + cityId + " #" + 
        "<input type='hidden' name='" + propertyPrefixName + "[#= index(data)#]." + cityId + "' value='#= " + cityId + " #' />" 

         ); 

        columns.Bound(p => p.Email).ClientTemplate("#= " + email + " #" + 
        "<input type='hidden' name='" + propertyPrefixName + "[#= index(data)#]." + email + "' value='#= " + email + " #' />" 
       ); 


        columns.Command(command => command.Destroy()).Width(20).Title(GlobalResources.Delete); 
       }) 
       .DataSource(dataSource => dataSource.Ajax() 
        .Model(model => 
        { 
         model.Id(p => p.Id); 
         model.Field(p => p.Id).Editable(false); 
        }) 
        .ServerOperation(false) 
      ) 
) 





<script> 

    function index(dataItem) { 

     var data = $("#AddressGrid").data("kendoGrid").dataSource.data(); 
     return data.indexOf(dataItem); 
    } 

</script> 

和員工的看法,我用這樣的

@Html.Partial("_AddressesGrid", Model.Addresses, new ViewDataDictionary { TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix =nameof(CreateEmployeeModel.Addresses)} }) 

當我編輯的電子郵件,我有這個錯誤 enter image description here

,它不編輯!

請幫忙,我怎麼可以在局部視圖中編輯kendo網格!

請注意劍道網格工作正常,如果我把它放在員工視圖沒有局部視圖。

+0

顯然,Kendo小部件喜歡在部分中使用[unique id](http://docs.telerik.com/kendo-ui/troubleshoot/troubleshooting-common-issues#creating-multiple-widgets-throws-javascript-errors)。請參閱[這個答案](http://stackoverflow.com/a/30413163/3585500)。 – ourmandave

+0

我在視圖中使用一個網格,我的問題是編輯incell時出現錯誤 – Jala

回答

0

變化

@Html.Partial("_AddressesGrid", Model.Addresses, new ViewDataDictionary { TemplateInfo = new System.Web.Mvc.TemplateInfo { HtmlFieldPrefix =nameof(CreateEmployeeModel.Addresses)} }) 

@Html.Partial("_AddressesGrid", Model.Addresses) 

,並注意不要使用HtmlFieldPrefix,劍道會讓編輯細胞的模板,錯誤的名字,讓我有上面的錯誤

相關問題