2013-07-29 5 views
8

나는 검도 그리드에 큰 문제가있다. 나는이검도 격자 루프 For

col.Bound(m => m.Compteurs) 
    .ClientTemplate("# for (var i=0;i<4;i++) { console.log(i) } #"); 

으로 클라이언트 템플릿으로 for 루프를 사용하는 경우

은 내가 증가되지 않습니다. 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 구문에는 아무런 문제가 없습니다. – pwdst

+1

예, 우리는 생성 된 코드가 ++를 제거한다는 것을 발견했습니다. 나는 아래에 답변을 게시합니다. –

답변

6

다음으로이 문제가있는 경우 다른 방법으로 해결할 수 있습니다.

첫번째 방법 (까다로운) : 는 자바 스크립트 함수 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++; 
    } 

3 번째 길 (매튜의 답변) :

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); 
+0

return ++ a는 더 좋을 것입니다. 예제에서는 중요하지 않지만 여전히 ... – Robert

+0

for 루프는 자바 스크립트 함수 안에 넣을 수 있습니다. 그것은 훨씬 더 깨끗합니다. – ataravati

+1

세 번째 방법은 작동하지 않습니다. 그러나 다음과 같습니다. var template = "# var {0, i <4, i ++} {console.log (i)} #"; var plusEncoded = System.Web.HttpUtility.UrlEncode ("+"); template = Regex.Replace (템플릿, @ "[+]", plusEncoded); ... col.Bound (m => m.Compteurs) .ClientTemplate (template); – Matthew

0

합니다. 적어도이 자바 스크립트 버전은 work 수행합니다

$("#grid").kendoGrid({ 
    dataSource: [ 
    { name: "John" }, 
    { name: "Jane" } 
    ], 
    columns: [ 
    { field: "name" }, 
    { field: "name", 
    template: "# for (var i=0;i<4;i++) { console.log(i) } #" 
    } 
    ] 
}); 

이 될 수 그리드가 결합 AJAX되지 않았는지? 전체 구성을 표시하면이를 확인하거나 거부합니다.

+0

그리드는 DataSource Object로 바인딩 된 ajax입니다. 다른 열은 ClientTemplate 또는 ClientTemplate + Partial View에서 잘 작동합니다. 나는 이것을 생성하기 위해 .Net 용 검도 MVC 구성 요소를 사용하고 있습니다. –