我在gridview中有一个fileupload控件,这样每一行(数据库中的项)都可以有一个与之关联的附件。我在fileupload控件旁边有一个按钮(除了默认浏览...按钮以选择文件)以实际获取文件并将其上传到文件服务器。
如果我使用“上传”按钮,这很有效。但是,在我的gridview下面,我有另一个在gridview之外的图像按钮,它只是坐在窗体/页面上。 这个“更新”按钮的想法是当最终用户对网格进行更改时,我可以简单地遍历网格并更新他们输入到数据库的值。这也很有效。
现在这是我的问题假设用户在网格视图中有3行。在其中的两行中,他决定添加一个附件,但他从不点击“上传”按钮,他只使用标准浏览按钮来选择文件。现在,不是单击网格视图上的“上传”按钮,而是单击网格外部的“更新”按钮,认为它将保存其附件。
所以我决定编写代码,在我的Update按钮循环中使用.FindControls("NameOfFileUploadControl")
从网格中获取fileupload控件,我循环遍历所有行。然后我检查myFileUploadControl.HasFile
属性是否存在文件以及是否上传文件然后继续代码。
问题是当我点击这个“更新”按钮.HasFile
总是返回false,即使我可以在fileuploadcontrol文本框中看到路径的文本字符串(浏览按钮旁边的标准字符串)。是因为这会回到页面加载事件并检查它是否是回发帖?是什么导致这种情况以及如何解决?
我添加了一些代码因为我仍然与此混淆
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
只需点击按钮即可调用此方法......
fileupload控件位于一个包含在UpdatePanel内的gridview中:
<asp:FileUpload Width="90px" Font-Size="xx-small" ID="fuAttachment" runat="server" />
那么为什么这个属性总是返回false?
答案 0 :(得分:0)