2016-05-12 8 views
0

Hallo Ich benutze das Kendo MVC UI Grid. So sieht es aus:Modell von Kendo Mvc UI Grid zu JavaScript-Funktion übergeben

@(Html.Kendo().Grid<TegelCheckerModel>() 
      .Name("Grid") 
      .Columns(columns => 
      { 
       columns.Bound(p => p.TegelNaam); 
       columns.Bound(p => p.TegelId).Sortable(false).Filterable(false).ClientTemplate("<span class='iconBtn raadplegen' onclick=\"javascript:showDetails('#= TegelNaam #')\" />").Title(""); 
      }) 
      .AutoBind(true) 
      .Pageable() 
      .Sortable() 
      .Filterable() 
        .Events(e => e.DataBound("gridDataBound ")) 
      .DataSource(dataSource => dataSource 
      .Ajax() //Or .Server() 
      .Read(read => read.Action("GetTegels", "TegelChecker") 
      .Data("getAlvNummerAndVoorWie")) 
      ) 
     ) 

Es gibt eine Spalte, die ein Bild anzeigt, das anklickbar ist. In diesem Moment kann ich den "Teglennaam" aus der Reihe, auf die das Bild geklickt wurde, weitergeben. Das funktioniert, aber ich möchte die gesamten Daten der Zeile übergeben, auf die das Element geklickt wurde. Wie kann ich das machen?

+0

übergeben Sie einfach das Objekt 'Daten' anstatt nur' TegelNaam' z. ändere es von ** # = TegelNaam # ** zu '# = data #' und entferne offensichtlich die Anführungszeichen, die du um dieses Element hast. –

+0

@DavidShorthose: das Ändern in Daten funktioniert nicht. Mein HTML sieht dann so aus:

+0

Entschuldigung. Sieh dir diese Antwort an, die ich gestern jemandem als mögliche Lösung für dich gegeben habe: http://stackoverflow.com/questions/37165644/working-on-templates-for-coloums-in-kendo-grid/37167115#37167115 –

Antwort

1

wie meine Antwort auf eine vorherige Frage antwortete ich.

siehe Link für ein funktionierendes Beispiel: http://dojo.telerik.com/OlALA

Ändern Sie den Code aus diesem:

.ClientTemplate("<span class='iconBtn raadplegen' onclick=\"javascript:showDetails('#= TegelNaam #')\" />") 

zu

.ClientTemplate("#=generateLink(data)#"); 

dann die JavaScript-Funktion kann dies tun:

function generateLink(data) 
    { 
    var ret = ''; 

    if(data.StatusDesc === '' && data.newStatusDesc !== '' && data.newStatusDesc !== null) 
    { 

     var linkElement = 'javscript:showDetails(' + JSON.stringify(data) + ')'; 




     ret = "<span class='iconBtn raadplegen' onclick='" + linkElement + "'>" +         data.newStatusDesc + '</span>'; 

     console.log(ret); 

    } 
    else 
    { 
     ret = data.StatusDesc; 
    } 




    return ret; 
    } 

die wichtige Bit ist hier JSON.stringify(data) dies das Element als String kodieren, sondern wird das Objekt in die Funktion richtig durch meine mock verzichten Ihrer showdetails Funktion wie folgt:

function showDetails(status){ 
     console.log(status); 
     console.log("Status is::"+ status); 

     alert("Status is::" + status.newStatusDesc); 
     return true; 
    } 

Ich habe mich ein wenig, dieses zu erhalten arbeiten (und Versuch einen Fehler), aber dies scheint der vernünftigste Weg, es zu tun (meiner Meinung nach).

+0

danke für die Hilfe, jetzt funktioniert es ganz gut. –