【发布时间】: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