2016-10-03 8 views
0

私は、読み取り機能に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; 
    } 

これが正常に動作します。 read関数でハードコードされた値65の代わりにjavascript関数GetContractIDを渡そうとすると、文字通り "GetContractID"がコントローラに渡されます。 。私はまた、$( "#のCoContractId")を入れて、読み取り機能でのval()の権利を試みた

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

(構文エラーがスローされます):

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

ここではそのjavascript関数のコードですjavascript内のid:contract IDの代わりにcontract IDだけを返します(コントローラには決して到達しません)。

それでは、どのように私は$( "#のCoContractId")を通過しないの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

公式に推奨されるアプローチは、私はそれを試してみました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

関連する問題