У меня есть элемент управления загрузкой файлов внутри вида сетки, так что с каждой строкой (элементом из базы данных) может быть связано вложение.У меня есть кнопка рядом с элементом управления загрузкой файлов (помимо кнопки обзора по умолчанию ..., чтобы выбрать файл), чтобы фактически взять файл и загрузить его на файловый сервер.
Это прекрасно работает, если я используюэта кнопка «Загрузить».Тем не менее, под моим видом сетки у меня есть еще одна кнопка с изображением, которая находится за пределами вида сетки, она просто находится на форме / странице.Идея этой кнопки «Обновить» заключается в том, что когда конечные пользователи вносят изменения в сетку, я могу просто циклически перемещаться по сетке и обновлять значения, которые они ввели в базу данных.Это также прекрасно работает.
Теперь вот моя проблема Предположим, у пользователя есть 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" />
Так почему же это свойство всегда возвращаетложь?