在 Kendo 网格 (MVC) 中将列值从 ClientTemplate 传递给 JS 函数
Pass column value to JS function from ClientTemplate in Kendo grid (MVC)
我正在尝试传递列值。但它不起作用,总是说 "TrackingID" 未定义。我花了很多时间尝试 diff 格式,但我觉得我遗漏了一些小东西。当我尝试在列中打印 TrackingID 的值时,它工作正常。但是当我试图将这个值传递给函数时,它给我错误提示 "TrackingID is undefined"..
下面的列是子网格的一部分,它存在于 kendo 模板中,如下所示:-
<script id="tplHistory" type="text/kendo-tmpl">
@(Html.Kendo().Grid<TrackingViewModel>()
.Name("HistoryGrid_#=PartnerGroupID#")
.Columns(columns =>
{
columns.Bound(v => v.PriceHigh).Title("Monthly High").Format("{0:c}").Width("12%");
columns.Bound(v => v.DateUpdated).Title("Edited Date").Format("{0:MM/dd/yyyy}").Width("10%");
columns.Bound(v => v.UpdatedBy).Title("Edited By").Width("10%");
columns.Bound(v => v.OperationName).Title("Status").Width("10%");
columns.Bound(v => v.TrackingID).HeaderTemplate(" ").ClientTemplate("#= revertTemplate(TrackingID) #");
})
请帮忙。
columns.Bound(v => v.TrackingID).HeaderTemplate(" ").ClientTemplate("#= revertTemplate(TrackingID)#");
function revertTemplate(tid) {
console.log(tid);
var markup = kendo.format("<i title='Revert the record' class='fa fa-floppy-o fontIcon' onclick=revertData({0})></i>", tid);
return markup;
}
function revertData(trackingid) {
alert(trackingid);
}
试试这个:
columns.Bound(v => v.TrackingID).HeaderTemplate(" ").ClientTemplate("<a onclick=\"revertTemplate('#=TrackingID#')\">#=TrackingID#</a>");
尝试如下所示更新您的方法(传递数据并使用 data.PropertyName
而不是仅使用 PropertyName
):
columns.Bound(v => v.TrackingID)
.HeaderTemplate(" ")
.ClientTemplate("#= revertTemplate(data)#");
function revertTemplate(data) {
console.log(data.TrackingID);
var markup = kendo.format("<i title='Revert the record' class='fa fa-floppy-o fontIcon' onclick=revertData({0})></i>", tid);
return markup;
}
function revertData(data) {
alert(data.TrackingID);
}
有关详细信息,请查看 How Do I Have Conditional Logic in a Column Client Template?
希望这有助于...
最后我找到了解决方案:-
columns.Bound(v => v.TrackingID).HeaderTemplate(" ")
.ClientTemplate("<i title='Revert the record' class='fa fa-floppy-o fontIcon' onclick='revertData(\#:TrackingID\#);'></i>");
我正在尝试传递列值。但它不起作用,总是说 "TrackingID" 未定义。我花了很多时间尝试 diff 格式,但我觉得我遗漏了一些小东西。当我尝试在列中打印 TrackingID 的值时,它工作正常。但是当我试图将这个值传递给函数时,它给我错误提示 "TrackingID is undefined".. 下面的列是子网格的一部分,它存在于 kendo 模板中,如下所示:-
<script id="tplHistory" type="text/kendo-tmpl">
@(Html.Kendo().Grid<TrackingViewModel>()
.Name("HistoryGrid_#=PartnerGroupID#")
.Columns(columns =>
{
columns.Bound(v => v.PriceHigh).Title("Monthly High").Format("{0:c}").Width("12%");
columns.Bound(v => v.DateUpdated).Title("Edited Date").Format("{0:MM/dd/yyyy}").Width("10%");
columns.Bound(v => v.UpdatedBy).Title("Edited By").Width("10%");
columns.Bound(v => v.OperationName).Title("Status").Width("10%");
columns.Bound(v => v.TrackingID).HeaderTemplate(" ").ClientTemplate("#= revertTemplate(TrackingID) #");
})
请帮忙。
columns.Bound(v => v.TrackingID).HeaderTemplate(" ").ClientTemplate("#= revertTemplate(TrackingID)#");
function revertTemplate(tid) {
console.log(tid);
var markup = kendo.format("<i title='Revert the record' class='fa fa-floppy-o fontIcon' onclick=revertData({0})></i>", tid);
return markup;
}
function revertData(trackingid) {
alert(trackingid);
}
试试这个:
columns.Bound(v => v.TrackingID).HeaderTemplate(" ").ClientTemplate("<a onclick=\"revertTemplate('#=TrackingID#')\">#=TrackingID#</a>");
尝试如下所示更新您的方法(传递数据并使用 data.PropertyName
而不是仅使用 PropertyName
):
columns.Bound(v => v.TrackingID)
.HeaderTemplate(" ")
.ClientTemplate("#= revertTemplate(data)#");
function revertTemplate(data) {
console.log(data.TrackingID);
var markup = kendo.format("<i title='Revert the record' class='fa fa-floppy-o fontIcon' onclick=revertData({0})></i>", tid);
return markup;
}
function revertData(data) {
alert(data.TrackingID);
}
有关详细信息,请查看 How Do I Have Conditional Logic in a Column Client Template? 希望这有助于...
最后我找到了解决方案:-
columns.Bound(v => v.TrackingID).HeaderTemplate(" ")
.ClientTemplate("<i title='Revert the record' class='fa fa-floppy-o fontIcon' onclick='revertData(\#:TrackingID\#);'></i>");