我想调用控制器的操作方法,并在Kendo Grid行上单击“返回视图”



下面是我的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());

有第三种方法(有点混乱(,它允许您添加自定义按钮/图标等。g:

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

公共类GridorderSummaryController:控制器 {

// GET: GridOrderSummary
 public ActionResult GridRowSummary(string ticketId)
 {
   // your code
    return View();
 }

}

最新更新