For循环在Kendo网格模板
问题描述:
我对Kendo网格有一个很大的麻烦。For循环在Kendo网格模板
如果我使用一个for循环客户端模板,因为这
col.Bound(m => m.Compteurs)
.ClientTemplate("# for (var i=0;i<4;i++) { console.log(i) } #");
我永远不会增加。 与while循环和循环内增量相同。
如何解决这个问题?
谢谢
编辑 - 电网的完整声明:
@(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"))
)
答
对于存在此问题的下一个问题,您可以通过不同的方式进行解决。
1路(狡猾): 添加JavaScript函数increment
function 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);
答
这应该有工作。至少这个JavaScript版本确实work:
$("#grid").kendoGrid({
dataSource: [
{ name: "John" },
{ name: "Jane" }
],
columns: [
{ field: "name" },
{ field: "name",
template: "# for (var i=0;i<4;i++) { console.log(i) } #"
}
]
});
难道说你的网是不是阿贾克斯约束?显示完整的配置将确认或否认这一点。
+0
网格是与数据源对象绑定的ajax。另一列适用于ClientTemplate或ClientTemplate +部分视图。我使用Kendo MVC Component for .Net来生成这个。 –
你有没有解决这个问题?我有**完全相反的问题,其中计数器不会**停止**递增(即使是硬编码少于这里的数字),它会使选项卡崩溃。 JavaScript语法没有错,因为它可以在开发工具中完美运行。 – pwdst
是的,我们发现生成的代码删除了++。我发表下面的答案。 –