2016-10-03 3 views
0

У меня есть сетка Кендо, для функции чтения которой требуется параметр 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; 
    } 

Это прекрасно работает. Если в функции чтения я пытаюсь передать функцию GetContractID javascript вместо жестко закодированного значения 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") Вал() прямо в функции чтения (вызывает ошибку синтаксиса) и возвращает только идентификатор контракта, а не id: идентификатор контракта в javascript (никогда не доходит до контроллера).

Так как я прохожу $ ("# CoContractId") Val() в качестве значения ID вместо жестких кодированных значений в этом заявлении:.

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

Update

Я также попробовал написать команду чтения, как показано ниже. Это не сработало. Когда страница с сеткой попадает, и когда сетка обновляется, она никогда не попадает в контроллер, когда я помещаю в нее контрольную точку.

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

ответ

0

Официально рекомендуемый подход заключается в использовании вспомогательную функцию, определенную с помощью Read(r => r.Data("..."))

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

+0

Я попробовал это, и это не работает. Он никогда не ударяет моего контроллера. Вот мой код: Read (read => {read.Action («GetContractPay», «WoApi»). Данные («GetContractID»);}) – boilers222

Смежные вопросы