2016-05-12 33 views
0

嗨,我正在使用Kendo MVC UI Grid。這是它的外觀:從Kendo Mvc UI Grid傳遞模型到javascript函數

@(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")) 
      ) 
     ) 

有一列顯示可點擊的圖像。 在這一刻,我可以通過點擊圖像的行中的「Tegelnaam」。 這可行,但我想傳遞該項目被點擊的行的全部數據。我怎樣才能做到這一點?

+0

只是傳遞對象'data'而不僅僅是'TegelNaam'例如將它從**#= TegelNaam#**更改爲'#= data#'顯然刪除了您對此項目的引用 –

+0

@DavidShorthose:將其更改爲數據不起作用。然後我的html看起來像這樣:> –

+0

抱歉。看看我昨天給某人的答案,作爲你可能的解決方案:http://stackoverflow.com/questions/37165644/working-on-templates-for-coloums-in-kendo-grid/37167115#37167115 –

回答

1

根據我的回答,我回答了前一個問題。

見鏈接的工作例如:http://dojo.telerik.com/OlALA

從這個修改代碼:

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

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

那麼javascript函數可以做到這一點:

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; 
    } 

這裏最重要的一點是JSON.stringify(data)這將項目編碼爲一個字符串,但將目標正確地傳遞到函數,如由我假裝你showDetails功能:

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

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

我,我花了一點得到這個工作(並嘗試一個錯誤),但這似乎是最明智的做法(在我看來)。

+0

感謝您的幫助,現在它工作得很好。 –