您好我正在使用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;从单击图像的行。 这有效,但我想传递单击该项目的行的整个数据。我怎么能这样做?
答案 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;
}
我带了一点让这个工作(和试验错误),但这似乎是最明智的做法(在我看来)。