2017-02-06 9 views
0

私は剣道のグリッド内にDropDownListForコントロールを持っています。DropDownListのサーバー側にパラメータを渡すには、その行の別の要素の値が必要です読み取り方法。これは例hereと同様の設定です。ここDropDownListの読み込みデータの呼び出しを決定する方法

はDropDownListForを定義するコードは次のとおり

@(Html.Kendo().DropDownListFor(m => m) 
.Name("LinkIdentifier") 
.OptionLabel("---Select Form, etc.---") 
.DataValueField("ID") 
.DataTextField("Name") 
.AutoBind(false) 
.DataSource(source => 
{ 
    source.Read(read => 
    { 
     read.Action("LinkTypeIdentifierDdl", "Alerts").Type(HttpVerbs.Post).Data("getCurrentLinkType"); 
    }).ServerFiltering(true); 
}) 
) 

そして、ここでは.DATAに呼び出されるjavascript関数である:

function getCurrentLinkType() { 
    var grid = $("#linkGrid").data("kendoGrid"); 
    var data = grid.dataSource.data(); 
    var dataItem = data[0]; 
    var valueForParameter = dataItem.SomeValue 
    //--snipped for brevity 
} 

上記の問題はデータ[0]。グリッド内の最初の行を指していますが、他の行を編集している場合は正しくありません。このメソッド内でjavascriptデバッガを使用し、 "this"を参照すると、ドロップダウンコントロールではなく、参照されるAJAX呼び出しです。メソッドとして ".Data(" getCurrentLinkType(this) ")"を指定することはできません。

したがって、どの行/コントロールがgetCurrentLinkTypeを呼び出したかをどのように判断できますか?

+0

あなたは 'getCurrentLinkType()'の非常に最初の行に 'はconsole.log(引数)'追加した場合、あなたは何を得ますか? – DontVoteMeDown

+0

@DontVoteMeDown、私はそれをテストし、関数に渡された唯一の引数は、空であるデータソースフィルタオブジェクト、すなわちfilter {filters:[]、logic: "and"}を含むオブジェクトです –

答えて

0

GridからDropDownListにデータ関数に渡されるコンテキストがないので、自分で把握する必要があります。

私は2つの方法を見つけました。

1:

// If your grid is single Selectable(), use the current selection 
var dataItem = grid.dataItem(grid.select()); 

2:

// If your grid is not Selectable or is multi Selectable, get the row/tr closest to the editor and then get the dataItem from that 
var dataItem = grid.dataItem($("#LinkIdentifier").closest("tr")); 
+0

グリッドは選択できません#2はトリックをした! – user2201301

関連する問題