【问题标题】:How to pass a field from a view to a Kendo Grid?如何将字段从视图传递到剑道网格?
【发布时间】:2016-10-03 19:42:45
【问题描述】:

我有一个剑道网格,它的读取功能需要一个名为 ID 的参数。如果我对 ID 进行硬编码,则读取命令会起作用:它调用控制器中的操作并返回网格的数据。我不知道如何从页面上的控件中传递一个值。我一直在寻找一个下午,但找不到答案。有人能解释一下怎么做吗?

这是我的带有硬编码值的网格:

 @(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,它实际上会将“GetContractID”传递给控制器​​。

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

这是该 javascript 函数的代码:

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

我还尝试将 $("#CoContractId").val() 放在读取函数中(引发语法错误)并仅返回合同 ID 而不是 id:javascript 中的合同 ID(永远不会到达控制器)。

那么,如何在此语句中将 $("#CoContractId").val() 作为 ID 的值而不是硬编码值传递:

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

更新

我也尝试像下面的代码那样编写读取命令。它没有用。当点击带有网格的页面并刷新网格时,当我在其中放置断点时它永远不会命中控制器。

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

【问题讨论】:

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


    【解决方案1】:

    官方推荐的做法是使用Read(r =&gt; r.Data("..."))定义的辅助函数

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

    【讨论】:

    • 我试过了,还是不行。它永远不会击中我的控制器。这是我的代码: Read(read => { read.Action("GetContractPay", "WoApi").Data("GetContractID"); })
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多