我有一个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"); })
答案 0 :(得分:0)
官方推荐的方法是使用通过Read(r => r.Data("..."))