我想调用控制器的操作方法和 return 查看 Kendo 网格行单击
I want to call Action Method of controller and return View on Kendo grid row click
下面是我的kendo网格代码
@(Html.Kendo().Grid<DataSource>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(p => p.Quote_ID).Filterable(false);
columns.Bound(p => p.Ticket_ID).Groupable(true);
columns.Bound(p => p.Channel).Groupable(true);
columns.Bound(p => p.Agent_Alias).Groupable(true).Hidden(true);
columns.Bound(p => p.Shipping_Carrier).Groupable(true).Hidden(true);
columns.Bound(p => p.Quote_ID).Title("View
Details").Groupable(false)
.Template(@<text>
@Html.ActionLink("Show Product Details", "GridRowSummary",
"GridOrderSummary")</text>);
})
我正在尝试从 ActionLink 调用控制器的操作方法。
Below My controller code
public ActionResult GridRowSummary()
{
return View();
}
使用 Template
将在使用 Ajax 绑定网格时起作用,例如:
columns.Template(c => @Html.ActionLink("GridRowSummary", "GridOrderSummary", new { id = c.Id, }));
如果不使用 Ajax 绑定网格,请在列上使用 ClientTemplate
属性,并在需要时使用显示关联数据的方法,例如:
columns.Bound(p => p.Quote_ID).Title("View Details").Groupable(false)
.ClientTemplate(@Html.ActionLink("#=Quote_ID#", "GridRowSummary", new { ID = "#=ID#" }).ToHtmlString());
还有第三种方法(有点乱),它允许您添加自定义 buttons/icons 等,例如:
columns.Bound(p => p.Quote_ID).ClientTemplate("<a href='" + @Url.Action("GridRowSummary", "GridOrderSummary", new { id = "#=Id#" }) + "' class='btn btn-primary'><i class='fa fa-eye'></i> Link</a>" );
编辑
通过查看 FAQ 部分,找到了一个更简洁的解决方案,您可以在其中传递控制器名称和 Quote_ID
参数(尽管这种方式确实涉及设置 Javascript 函数):
columns.Bound(p => p.Quote_ID).ClientTemplate("#= getDetails(data) #");
<script>
function getDetails(data) {
var action = '@Url.Action("NameOfMethod", "NameOfController")';
var html = kendo.format("<a href='{0}/{1}'>Link</a>",
action,
data.Quote_ID
);
return html;
}
</script>
以下代码适用于客户端模板。需要更换。
columns.Bound(p => p.Quote_ID).Title("View Details").Groupable(false)
.ClientTemplate(
@Html.ActionLink("#=Quote_ID#", "Summary", new { Quote_ID = "Id"
}).ToHtmlString().Replace("Id", "#=Quote_ID#"));
这个解决方案适合我。
.Events(events =>
{
events.Change("onRowSelected");
})
function onRowSelected(e) {
debugger;
var gview = $("#grid").data("kendoGrid");
//Getting selected item
var selectedItem = gview.dataItem(gview.select());
var ticketId = selectedItem["Ticket_ID"];
window.location.href = "/GridOrderSummary/GridRowSummary?
ticketId=" + ticketId;
}
//Controller code
public class GridOrderSummaryController:控制器
{
// GET: GridOrderSummary
public ActionResult GridRowSummary(string ticketId)
{
// your code
return View();
}
}
下面是我的kendo网格代码
@(Html.Kendo().Grid<DataSource>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(p => p.Quote_ID).Filterable(false);
columns.Bound(p => p.Ticket_ID).Groupable(true);
columns.Bound(p => p.Channel).Groupable(true);
columns.Bound(p => p.Agent_Alias).Groupable(true).Hidden(true);
columns.Bound(p => p.Shipping_Carrier).Groupable(true).Hidden(true);
columns.Bound(p => p.Quote_ID).Title("View
Details").Groupable(false)
.Template(@<text>
@Html.ActionLink("Show Product Details", "GridRowSummary",
"GridOrderSummary")</text>);
})
我正在尝试从 ActionLink 调用控制器的操作方法。
Below My controller code
public ActionResult GridRowSummary()
{
return View();
}
使用 Template
将在使用 Ajax 绑定网格时起作用,例如:
columns.Template(c => @Html.ActionLink("GridRowSummary", "GridOrderSummary", new { id = c.Id, }));
如果不使用 Ajax 绑定网格,请在列上使用 ClientTemplate
属性,并在需要时使用显示关联数据的方法,例如:
columns.Bound(p => p.Quote_ID).Title("View Details").Groupable(false)
.ClientTemplate(@Html.ActionLink("#=Quote_ID#", "GridRowSummary", new { ID = "#=ID#" }).ToHtmlString());
还有第三种方法(有点乱),它允许您添加自定义 buttons/icons 等,例如:
columns.Bound(p => p.Quote_ID).ClientTemplate("<a href='" + @Url.Action("GridRowSummary", "GridOrderSummary", new { id = "#=Id#" }) + "' class='btn btn-primary'><i class='fa fa-eye'></i> Link</a>" );
编辑
通过查看 FAQ 部分,找到了一个更简洁的解决方案,您可以在其中传递控制器名称和 Quote_ID
参数(尽管这种方式确实涉及设置 Javascript 函数):
columns.Bound(p => p.Quote_ID).ClientTemplate("#= getDetails(data) #");
<script>
function getDetails(data) {
var action = '@Url.Action("NameOfMethod", "NameOfController")';
var html = kendo.format("<a href='{0}/{1}'>Link</a>",
action,
data.Quote_ID
);
return html;
}
</script>
以下代码适用于客户端模板。需要更换。
columns.Bound(p => p.Quote_ID).Title("View Details").Groupable(false)
.ClientTemplate(
@Html.ActionLink("#=Quote_ID#", "Summary", new { Quote_ID = "Id"
}).ToHtmlString().Replace("Id", "#=Quote_ID#"));
这个解决方案适合我。
.Events(events =>
{
events.Change("onRowSelected");
})
function onRowSelected(e) {
debugger;
var gview = $("#grid").data("kendoGrid");
//Getting selected item
var selectedItem = gview.dataItem(gview.select());
var ticketId = selectedItem["Ticket_ID"];
window.location.href = "/GridOrderSummary/GridRowSummary?
ticketId=" + ticketId;
}
//Controller code
public class GridOrderSummaryController:控制器 {
// GET: GridOrderSummary
public ActionResult GridRowSummary(string ticketId)
{
// your code
return View();
}
}