2016-09-28 16 views
0

Kendo Gridを使用してファイルをアップロードしようとしています。Kendo Uploadを使用すると、モデルとファイルが関連してアップロードが別々に行われないため、オプションを使用できません。剣道グリッドにファイルを追加する

私は、HttpPostedFileBaseフィールドをモデルに持ち、それをsaveイベントに設定するという2つのオプションを考えました。そして、そのファイルをaction methodの引数として受け取って、Dataメソッドupdatecreateの設定を使用します。これらの方法の両方は、JavaScript runtime error: Argument not optionalのようなクライアント側のkendoの例外に終わるでしょう。

これで私を導くことができれば感謝します。

Action method署名:

public async Task<ActionResult> Update([DataSourceRequest] DataSourceRequest request, myViewModel model, HttpPostedFileBase file) 

クライアント側機能:

var descRes = new function() { 
    this.onSave = function (e) { 
     var u2 = $('#upload2'); 
     var data = new FormData(); 
     var files = $('#upload2').get(0).files; 
     if (files.length > 0) 
      data.append('file', files[0]); 

     e.model.set('ImageFile', files[0]); // I have tried to set it to `data` too 
    }; 

    this.getFile = function (e) { 
     var data = new FormData(); 
     var files = $('#upload2').get(0).files; 
     if (files.length > 0) 
      data.append('file', files[0]); 

     return { file: data }; 
     // return data; // I have also tried this, or returning `files[0]` directly 
    }; 
}; 

グリッドの設定:私も別途Kendo Uploadを使用して、ファイルの名前を使用しようとしている

@(Html.Kendo().Grid<viewModel>() 
    .Name("grid") 
    // removed for brevity 
    .Editable(e => e.Mode(GridEditMode.InLine)) 
    .Events(e => e 
     .Save("descRes.onSave") 
    ) 
    .DataSource(ds => ds 
     .Ajax() 
     .Model(m => 
     { 
      m.Id(x => x.Id); 
     }) 
     .Read(r => r.Action("Read", "AssetRes").Data("descRes.readData")) 
     .Create(c => c.Action("Create", "AssetRes").Data("descRes.getFile")) 
     .Update(u => u.Action("Update", "AssetRes").Data("descRes.getFile")) 
     .Destroy("Delete", "AssetRes") 
    ) 
) 

グリッドのモデルはthis example、t彼の問題は、アップロードオブジェクトには機能がないことです。filesgetFilesは定義されていません。

答えて

0

アップロード用のカスタムグリッドエディタを作成できます。アップロードは非同期で動作するはずなので、ファイルがアップロードされたときにのみ行を保存することができます。モデルでは、アップロードによって返されたTempFileIDを書き込みます。 このようにして、アップロードとその他のデータを含むグリッドを作成しました。ちょっとトリッキーですが、可能です。

関連する問題