将模型从Kendo Mvc UI Grid传递到javascript函数

时间:2016-05-12 09:45:13

标签: javascript kendo-grid

您好我正在使用Kendo MVC UI Grid。这是它的外观:

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

有一列显示可点击的图像。 此刻我可以通过&#34; Tegelnaam&#34;从单击图像的行。 这有效,但我想传递单击该项目的行的整个数据。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

按照我之前的问题回答我的回答。

请参阅工作示例的链接: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; 
    }

我带了一点让这个工作(和试验错误),但这似乎是最明智的做法(在我看来)。