如何将视图中的字段传递给Kendo Grid?

时间:2016-10-03 19:42:46

标签: jquery kendo-ui telerik kendo-grid telerik-grid

我有一个Kendo网格,其读取功能需要一个名为ID的参数。如果我对ID进行硬编码,则read命令有效:它调用控制器中的操作并返回网格的数据。我无法弄清楚如何从页面上的控件传递一个值。我整个下午都在搜索,但找不到答案。有人可以解释一下如何做到这一点吗?

这是我的网格,其中包含硬编码值:

 @(Html.Kendo().Grid<tblContractPay>()
   .Name("GridContractPay")
   .Columns(columns =>
     {
       columns.Bound(o => o.SchedDate).Title("Date").Visible(true).Format("{0:M/dd/yyyy}");
       columns.Bound(o => o.Amount).Title("Amout").Visible(true).Format("{0:c}");
     })
   .Pageable(x => x.PageSizes(new[] { 10, 25, 50, 100 }).Refresh(true).ButtonCount(5))
   .DataSource(dataSource => dataSource
   .WebApi()
   .Read(read => read.Url(Url.HttpRouteUrl("AppStdApi", new { controller = "WoApi", Action = "GetContractPay", id = "65" })))
   .PageSize(25)
 )
 .AutoBind(true)
)

以下是控制器中的操作:

    public DataSourceResult GetContractPay([ModelBinder(typeof(Koorsen.ModelBinders.DataSourceRequestModelBinder))] DataSourceRequest request, string id)
    {
        var obj = rep.GetContractPayByContract(int.Parse(id)).ToDataSourceResult(request);

        return obj;
    }

这很好用。如果在读取函数中,我尝试传递一个javascript函数GetContractID而不是硬编码值65,它实际上传递了#34; GetContractID&#34;到控制器。

.Read(read => read.Url(Url.HttpRouteUrl("AppStdApi", new { controller = "WoApi", Action = "GetContractPay", id = "GetContractID" })))

这是javascript函数的代码:

function GetContractID()
{
    var contractID = $("#CoContractId").val();
    return
    {
        id: contractID
    }
}

我还尝试将$(&#34;#CoContractId&#34;。)。val()放在read函数中(抛出语法错误)并仅返回合约ID而不是id:contract ID在javascript中(永远不会到达控制器)。

那么如何将$(&#34;#CoContractId&#34;)。val()作为ID的值而不是此语句中的硬编码值传递:

.Read(read => read.Url(Url.HttpRouteUrl("AppStdApi", new { controller = "WoApi", Action = "GetContractPay", id = ??? })))

更新

我也尝试过编写read命令,如下面的代码所示。它没有用。当点击带有网格的页面并刷新网格时,当我在其中放置断点时,它永远不会到达控制器。

Read(read => { read.Action("GetContractPay", "WoApi").Data("GetContractID"); })

1 个答案:

答案 0 :(得分:0)

官方推荐的方法是使用通过Read(r => r.Data("..."))

定义的辅助功能

http://docs.telerik.com/kendo-ui/aspnet-mvc/helpers/grid/binding/ajax-binding#pass-additional-data-to-action-methods