2016-09-28 4 views
0

Я пытаюсь загрузить файл с помощью Kendo Grid, используя Kendo Upload, не является вариантом, потому что модель и файл связаны, и загрузка не может произойти отдельно.Добавление файла в Kendo Grid

Я рассмотрел два варианта, имея поле HttpPostedFileBase в модели и установив его в событии save. И получение этого файла в качестве аргумента в action method и использование Data метода update и create конфигураций. Оба эти способа будут в конечном итоге с клиентскими kendo исключениями, такими как JavaScript runtime error: Argument not optional.

Буду признателен, если вы позволите мне с этим связаться.

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 
    }; 
}; 

Конфигурации заземляющего по:

@(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") 
    ) 
) 

Я также пытаюсь использовать Kendo Upload отдельно и использовать имя файла в модель сетки, как в this example, t проблема заключается в том, что объект загрузки не имеет никаких функций, files и getFiles не определены.

ответ

0

Вы можете написать специальный редактор сетки для загрузки. Загрузка должна работать как можно скорее, поэтому вы можете сохранить свою строку только при загрузке файла. В вашей модели вы затем записываете TempFileID, возвращаемый при загрузке. Таким образом, я создал сетки с загрузками и дополнительными данными. Это немного сложно, но возможно.

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

  • Нет связанных вопросов^_^