ASPxUploadControl: как синхронизировать данные из двух элементов управления? - PullRequest
0 голосов
/ 09 ноября 2011

Мне нужно иметь ДВА элемента управления ASPxUploadControl на одной веб-странице.Одна кнопка UPLOAD должна начать загрузку с обоих элементов управления.Это просто: в коде Jscript я вызываю метод Upload () для обоих элементов управления;на стороне сервера я обрабатываю событие FilesUploadComplete на обоих элементах управления.

Но у меня возникает следующая проблема - мое приложение должно иметь списки UploadedFiles из обоих элементов управления ОДНОВРЕМЕННО.Когда обработчик события FilesUploadComplete вызывается для первого ASPxUploadControl, свойство UploadedFiles второго элемента управления имеет значение null.И, соответственно, когда вызывается обработчик события FilesUploadComplete для второго ASPxUploadControl, свойство UploadedFiles первого элемента управления равно нулю.

Можно ли как-то решить проблему?Я мог бы загрузить файлы, используя функцию обратной передачи - выполняйте обратную передачу всей формы, когда нажимается кнопка ЗАГРУЗИТЬ.Это дает мне оба списка UploadedFiles одновременно, но приводит к другой проблеме: индикатор прогресса не работает в режиме обратной передачи.Это неприемлемо для меня - я хочу отображать прогресс загрузки.

Ответы [ 2 ]

1 голос
/ 11 ноября 2011

Это странная ситуация, но вы можете попробовать это:
1. Перед тем как вызвать триггер метода загрузки, отправьте на сервер список файлов обоих элементов управления загрузкой.Вы можете сделать это, вызвав пользовательский обработчик http, используя ajax.Если вы используете jQuery:

$.ajax(
{
    url: 'MyHandler.ashx',
    dataType: 'json',
    cache: false,
    data: { fileList1: uploadControlFileList1, fileList2: uploadControlFileList2},
    success: function ()
    {
        // call Upload methods here;
    }
});

2.В вашем обработчике сохраните эти списки файлов в вашей базе данных вместе с идентификатором сессии.Или вы можете сохранить этот список в сессии, если вам будет проще.Также сохраняйте время получения списка файлов.

3.При получении файла (ов) проверьте, есть ли он в вашем списке, и попробуйте связать его с другими управляющими файлами.При необходимости используйте время из шага 2 для выбора между списками файлов.Пометить файл как загруженный при его получении.Подождите, пока другие контрольные файлы.Когда все элементы управления загружены, удалите fileLists из session / db и продолжайте свою логику.

Есть некоторая работа с этим, но она должна работать.

0 голосов
/ 10 ноября 2011

Вы можете использовать один экземпляр ASPxUploadControl с несколькими входными файлами.См. «Управление загрузкой - загрузка нескольких файлов» http://demos.devexpress.com/ASPxperienceDemos/UploadControl/MultiFileUpload.aspx онлайн-демонстрация относительно этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...