0

私はTelerik Gridを使用しているMVC 5アプリケーションを持っています。これまでのところすべてが良いです。第2編集可能なポップアップを呼び出すカスタムコマンド

私は、編集コマンドがGridEditMode.Popupに設定されたときと同じように、編集可能なポップアップを呼び出すカスタムコマンドを作成しようとしています。これは、グリッドがバインドされているモデルからのデータのサブセットを表示します。

私はこのデモをここで見てきました - >http://demos.telerik.com/aspnet-mvc/grid/custom-command カスタムコマンドですが、私はそれを編集可能な画面に変えたいのですか?

これは少し曖昧ですが、私は今具体的に何を質問するのかよく分かりません。私が試しなければならなかったのは、編集画面全体を手作業でHTMLで構築し、デモが示すようにそのページに埋め込むという選択肢があるのだろうかと思います。

私は以下のモデルを持っています。私は自分のポップアップでModelBという子を手に入れようとしています。

ModelA 
Guid   ID 
string  Name 
IList<ModelB> Roles 

ModelB 
Guid   ID 
Guid   ModelA_ID 
string  Role 
+0

グリッドから行を編集するか、他のデータがありますかカスタムウィンドウで編集したいですか? – mrmashal

+0

申し訳ありませんが、私の質問にモデルを追加します。ありがとうございます。 –

+0

モデルを追加する必要はありません。あなたの質問がグリッド編集に関するものかどうか分かりませんでしたか? – mrmashal

答えて

2

私はあなたが(MVC editor template内側)ポップアップエディタ内の別のグリッドに子どもを編集する必要がありますね。子グリッドは、親ID(modelA_ID)を入力パラメーターとする独自のコントローラー/アクションにバインドする必要があります。

@(Html.Kendo().Grid<ModelA>() 
.Name("grid") 
.Columns(columns => 
{ 
    columns.Bound(e => e.Name); 
    columns.Command(command => 
     { 
      command.Edit(); 
      command.Destroy(); 
     }); 
}) 
.ToolBar(tools => tools.Create()) 
.Editable(editable => editable 
    .Mode(Kendo.Mvc.UI.GridEditMode.PopUp) 
    .TemplateName("MyTemplate")) 
.Pageable().Sortable().Filterable() 
.DataSource(source => source.Ajax() 
    .Model(model => model.Id(e => e.ID)) 
    .Read(read => read.Action("Read_ModelA", "MyController")) 
    .Update(update => update.Action("Update_ModelA", "MyController")) 
    .Create(create => create.Action("Create_ModelA", "MyController")) 
    .Destroy(destroy => destroy.Action("Destroy_ModelA", "MyController")))) 

、あなたが持っているかもしれないエディタのテンプレート(MyTemplate.cshtml)中:

メイングリッドは次のように見えるかもしれ

@model ModelA 
@Html.HiddenFor(m => m.ModelA_ID) 
@(Html.Kendo().Grid<ModelB>() 
.Name("childGrid") 
.Columns(columns => 
{ 
    columns.Bound(o => o.Role); 
    columns.Command(command => 
    { 
     command.Edit(); 
     command.Destroy(); 
    }); 
}) 
.ToolBar(tools => tools.Create()) 
.Editable(editable => editable 
     .Mode(Kendo.Mvc.UI.GridEditMode.InLine)) 
.Pageable().Sortable().Filterable() 
.DataSource(source => source.Ajax() 
    .Model(model => model.Id(e => e.ID)) 
    .Read(read => read.Action("Read_ModelB", "MyController").Data("getCurrentParentId")) 
    .Create(create => create.Action("Create_ModelB", "MyController").Data("getCurrentParentId")) 
    .Update(update => update.Action("Update_ModelB", "MyController")) 
    .Destroy(destroy => destroy.Action("Destroy_ModelB", "MyController"))) 
.ToClientTemplate() 
) 

とJavaScript関数getCurrentParentIdは、次のようになります。

function getCurrentParentId() { 
    return { 
     modelA_ID: $('#ModelA_ID').val() 
    } 
} 
+0

応答をありがとう、私はこれを試しても、これは私が既に持っている編集ポップアップでグリッドを作成しませんか?もし私がそれを別のポップアップにする必要があれば、それは私の要求の奇妙なことです。彼らはすべてのデータを一緒に見たいのですが、編集のために2つの異なるワークフローがあります。理にかなっている? –

+0

[階層グリッド](http://demos.telerik.com/aspnet-mvc/grid/hierarchy)を使用できませんか? – mrmashal

+0

うーん、私はそれぞれのポップアップができない限り、そうは思わない。私は可能性は確かではないので、私は周りを見なければならないでしょう... –

関連する問題