Asp.net-Mvc
劍道網格模板中的 For 循環
我對劍道網格有很大的麻煩。
如果我像這樣使用 for 循環作為客戶端模板
col.Bound(m => m.Compteurs) .ClientTemplate("# for (var i=0;i<4;i++) { console.log(i) } #");i 永遠不會增加。與while循環相同,循環內遞增。
如何解決這個問題?
謝謝
編輯 - Grid 的完整聲明:
@(Html.Kendo().Grid<EAGLE.Models.ParamUf>() .Name("ParamGrid") .Columns(col => { col.Bound(m => m.Groupement); col.Bound(m => m.Etablissement).ClientTemplate("#= Etablissement.EtablissementName #"); col.Bound(m => m.Service).ClientTemplate("#= Service.ServiceName #"); col.Bound(m => m.Discipline).ClientTemplate("#= Discipline.DisciplineName #"); col.Bound(m => m.Unite).ClientTemplate("#= Unite.UniteName #"); col.Bound(m => m).ClientTemplate(Html.Partial("_Tel").ToHtmlString()); col.Bound(m => m.Unite.TypeHebergement).Title("Hébergement"); col.Bound(m => m.Installe); col.Bound(m => m.Ferme); col.Bound(m => m.Compteurs).ClientTemplate("# for (var i=0;i<4;i++) { console.log(i) } #"); col.Command(commands => { commands.Edit().UpdateText("Mettre à jour").CancelText("Annuler").Text("Edit"); commands.Destroy().Text("Suppr."); }).Title(string.Empty).Width(160); } ) .DataSource(data => data .Ajax() .Read(read => read.Action("Param_Read", "Param", new { entityCode = @ViewBag.Code, entityType = @ViewBag.Type }).Data("filterUnit")) .Model(m => { m.Id(a => a.Unite.UniteCode); m.Field(a => a.Etablissement).DefaultValue(new EAGLE.Models.Etablissement()); m.Field(a => a.Service).DefaultValue(new EAGLE.Models.Service()); m.Field(a => a.Discipline).DefaultValue(new EAGLE.Models.Discipline()); m.Field(a => a.Unite).DefaultValue(new EAGLE.Models.Unite()); }) .Create(cre => cre.Action("Param_Create", "Param")) .Update(upd => upd.Action("Param_Update", "Param")) .Destroy(des => des.Action("Param_Destroy", "Param")) .Batch(false) .ServerOperation(false)) .Pageable(pager => pager .Enabled(false) .Messages(m => m.Display("Nombre total d'hébergement : {2}")) .Messages(m => m.Empty("Pas d'hébergement.")) .PreviousNext(false) .Input(false) .Numeric(false)) .ToolBar(toolbar => { toolbar.Create(); }) .Editable(ed => ed.Mode(GridEditMode.PopUp).TemplateName("_ParamEdit")) .Events(e => e.DataBound("onDatabound")) )
對於有此問題的下一個,您可以通過不同的方式解決。
第一種方式(棘手):添加javascript函式
incrementfunction increment(a) { return a++; }並在模板中使用
col.Bound(m => m.Compteurs) .ClientTemplate("# for (var i=0;i<4;increment(i)) { console.log(i) } #");第二種方式通過 c# 程式碼(包括 col.Bound 之間):
int i = 0; foreach (EAGLE.Models.Compteur c in ViewBag.Compteurs) { col.Bound(m => m.Compteurs[i].Dispo).Title(c.NomCourt) .HtmlAttributes(new { style = String.Format("background-color:\\#{0}", c.Color), @class = "compteur" }) .HeaderTemplate("<img class='iconeHeader' src='data:image/png;base64," + c.Picto + "' title='"+ c.Nom +"' />"); i++; }第三種方式(馬修的回答):
var template = "# for (var i=0;i<4;i++) { console.log(i) } #"; var plusEncoded= System.Web.HttpUtility.UrlEncode("+"); template = Regex.Replace(template, @"[+]", plusEncoded); col.Bound(m => m.Compteurs).ClientTemplate(template);