Элемент управления FileUpload внутри gridview (ajax updatepanel) - PullRequest
1 голос
/ 11 марта 2011

У меня есть элемент управления загрузкой файлов внутри вида сетки, так что с каждой строкой (элементом из базы данных) может быть связано вложение.У меня есть кнопка рядом с элементом управления загрузкой файлов (помимо кнопки обзора по умолчанию ..., чтобы выбрать файл), чтобы фактически взять файл и загрузить его на файловый сервер.

Это прекрасно работает, если я используюэта кнопка «Загрузить».Тем не менее, под моим видом сетки у меня есть еще одна кнопка с изображением, которая находится за пределами вида сетки, она просто находится на форме / странице.Идея этой кнопки «Обновить» заключается в том, что когда конечные пользователи вносят изменения в сетку, я могу просто циклически перемещаться по сетке и обновлять значения, которые они ввели в базу данных.Это также прекрасно работает.

Теперь вот моя проблема Предположим, у пользователя есть 3 строки в виде сетки.На 2 из этих строк он решает добавить вложение, но он никогда не нажимает кнопку «Загрузить», он использует только стандартную кнопку просмотра, чтобы выбрать файл.Теперь вместо того, чтобы нажимать кнопку «Загрузить», которая находится в виде сетки, он заканчивает тем, что нажимает кнопку «Обновить» за пределами сетки, думая, что это сохранит его вложения.

Поэтому я решил написать код для захватауправление загрузкой файла из сетки, используя .FindControls("NameOfFileUploadControl") в моем цикле кнопки «Обновить», где я перебираю все строки.Затем я проверяю, есть ли свойство myFileUploadControl.HasFile, чтобы увидеть, существует ли файл, и если он действительно загружает файл, затем продолжаю с кодом.

Проблема заключается в том, что когда я нажимаю эту кнопку «Обновить», .HasFile всегда возвращаетfalse, хотя я вижу текстовую строку пути в текстовом поле fileuploadcontrol (стандартное рядом с кнопкой обзора).Это потому, что это возвращается к событию загрузки страницы и проверяет, является ли это сообщение обратно?Что вызывает это и как я могу это исправить?

edit

Я добавляю некоторый код, потому что я все еще путаюсь с этим

Protected Sub SaveGrid()
 For Each Row As GridViewRow In Me.gvLineItems.Rows
            Dim f As FileUpload = CType(Row.FindControl("fuAttachment"), FileUpload)
                'todo: this part is not working
                If f.FileName.Length > 0 Then 'returns 0 always
                    'this returns 0.
                end if

                if f.HasFile() then
                      'this also returns false
                end if
 Next
End Sub

Этот метод вызывается по щелчкукнопка ...

Элемент управления загрузкой файлов находится в виде сетки, которая находится внутри UpdatePanel:

<asp:FileUpload Width="90px" Font-Size="xx-small" ID="fuAttachment" runat="server" />

Так почему же это свойство всегда возвращаетложь?

1 Ответ

0 голосов
/ 11 марта 2011

Это печально известная проблема с панелями обновления Ajax.

Вот несколько ссылок на статьи, которые могут помочь.

http://wikiaspnet.wordpress.com/2008/03/11/ajax-fileupload/

http://www.codeproject.com/KB/ajax/simpleajaxupload.aspx

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