如何将包含按钮的 Kendo 网格中的列的值发送到 ClientTemplate?
How can I send a value from a column in a Kendo Grid containing a button to a ClientTemplate?
我正在尝试将网格中的行的 ID 发送到 ClientTemplate。我有一个带有删除按钮的列,我想将单击的行的 ID 发送到 ClientTemplate,这样我就可以通过 AJAX 调用点击控制器。我知道我可以通过 "Url.Action("Action","Controller")" 执行此操作,但我试图在不刷新页面的情况下执行此操作,因为我正在处理的网格是位于 Kendo 弹出窗口 Window。我尝试了多种语法变体,但都无济于事。任何帮助解决这个问题的帮助将不胜感激。以下是我尝试过的一些语法.....
column
.Template(@<text></text>).Width(90)
.ClientTemplate("#= MyDeleteTemplate(CsvSubmittalID) #");
.ClientTemplate("<div style='text-align:center'><a class=ActionbuttonDelete href=\"" + Url.Action("DeleteCsvRow", "Project") + "/#=CsvSubmittalID#\"> [Delete] </a></div>");
.ClientTemplate("#= MyDeleteTemplate(CsvSubmittalID)#", <div style='text-align:center'><a class=ActionbuttonDelete [Delete] </a></div>");
我需要按钮位于列中,但不使用 Url.Action
将行的 ID 传递给 Javascript
以下使用类似功能对我有用。我只是通过 $.ajax{}
发出呼叫
.....
.ClientTemplate("<a style='' id='lnkDelete#=CsvSubmittalID#' onclick='lnkDeleteOnClick(#=CsvSubmittalID#)' href='javascript:void(0)'><strong>${FirstName}, ${LastName}</strong</a>")
...
function lnkDeleteOnClick(CsvSubmittalID){
$.ajax({
type: "GET",
url: '@Url.Action("DeleteCsvRow","Project")',
datatype: "json",
traditional: true,
data: {CsvSubmittalID:CsvSubmittalID},
success: function (data, status, xhr ) {
var grid = $("#myGrid").data("kendoGrid");
grid.dataSource.read();
},
error: function (xhr, status, error) {
console.log(error);
}
});
}
经过一天半的努力,我找到了实现我最初目标的语法。
column
.Template(@<text></text>).Width(90)
.ClientTemplate("<div style='text-align:center; cursor:pointer '><a class=ActionbuttonDelete onclick=\"MyDeleteTemplate('#=CsvSubmittalID#')\">[Delete]</a></div>");
下面是我发送 Ajax 调用的模板....
function MyDeleteTemplate(CsvSubmittalID)
{
$.ajax({
url: '@Url.Action("DeleteCsvRow", "Project")',
type: "POST",
data: ({ id : CsvSubmittalID }),
dataType: "json"
})
$('#CsvGrid').data('kendoGrid').dataSource.read();
}
Javascript 末尾的 read() 更新了网格,一切都按预期工作。
我正在尝试将网格中的行的 ID 发送到 ClientTemplate。我有一个带有删除按钮的列,我想将单击的行的 ID 发送到 ClientTemplate,这样我就可以通过 AJAX 调用点击控制器。我知道我可以通过 "Url.Action("Action","Controller")" 执行此操作,但我试图在不刷新页面的情况下执行此操作,因为我正在处理的网格是位于 Kendo 弹出窗口 Window。我尝试了多种语法变体,但都无济于事。任何帮助解决这个问题的帮助将不胜感激。以下是我尝试过的一些语法.....
column
.Template(@<text></text>).Width(90)
.ClientTemplate("#= MyDeleteTemplate(CsvSubmittalID) #");
.ClientTemplate("<div style='text-align:center'><a class=ActionbuttonDelete href=\"" + Url.Action("DeleteCsvRow", "Project") + "/#=CsvSubmittalID#\"> [Delete] </a></div>");
.ClientTemplate("#= MyDeleteTemplate(CsvSubmittalID)#", <div style='text-align:center'><a class=ActionbuttonDelete [Delete] </a></div>");
我需要按钮位于列中,但不使用 Url.Action
将行的 ID 传递给 Javascript以下使用类似功能对我有用。我只是通过 $.ajax{}
发出呼叫.....
.ClientTemplate("<a style='' id='lnkDelete#=CsvSubmittalID#' onclick='lnkDeleteOnClick(#=CsvSubmittalID#)' href='javascript:void(0)'><strong>${FirstName}, ${LastName}</strong</a>")
...
function lnkDeleteOnClick(CsvSubmittalID){
$.ajax({
type: "GET",
url: '@Url.Action("DeleteCsvRow","Project")',
datatype: "json",
traditional: true,
data: {CsvSubmittalID:CsvSubmittalID},
success: function (data, status, xhr ) {
var grid = $("#myGrid").data("kendoGrid");
grid.dataSource.read();
},
error: function (xhr, status, error) {
console.log(error);
}
});
}
经过一天半的努力,我找到了实现我最初目标的语法。
column
.Template(@<text></text>).Width(90)
.ClientTemplate("<div style='text-align:center; cursor:pointer '><a class=ActionbuttonDelete onclick=\"MyDeleteTemplate('#=CsvSubmittalID#')\">[Delete]</a></div>");
下面是我发送 Ajax 调用的模板....
function MyDeleteTemplate(CsvSubmittalID)
{
$.ajax({
url: '@Url.Action("DeleteCsvRow", "Project")',
type: "POST",
data: ({ id : CsvSubmittalID }),
dataType: "json"
})
$('#CsvGrid').data('kendoGrid').dataSource.read();
}
Javascript 末尾的 read() 更新了网格,一切都按预期工作。