【问题标题】:FileUpload control inside gridview (ajax updatepanel)gridview 中的 FileUpload 控件(ajax updatepanel)
【发布时间】:2011-07-13 11:24:19
【问题描述】:

我在gridview 中有一个fileupload 控件,这样每一行(来自数据库的项目)都可以有一个与之关联的附件。我在文件上传控件旁边有一个按钮(除了用于选择文件的默认浏览...按钮)来实际获取文件并将其上传到文件服务器。

如果我使用此按钮“上传”,这将非常有用。但是,在我的gridview 下方,我有另一个位于gridview 之外的图像按钮,它只是位于表单/页面上。 这个“更新”按钮的想法是当最终用户对网格进行更改时,我可以简单地遍历网格并更新他们输入到数据库中的值。这也很有效。

现在这是我的问题假设用户在网格视图中有 3 行。在其中的 2 行中,他决定添加一个附件,但他从不点击“上传”按钮,他只使用标准浏览按钮来选择文件。现在,他没有点击网格视图上的“上传”按钮,而是点击了网格外部的“更新”按钮,认为这会保存他的附件。

所以我决定编写代码,在我的更新按钮循环中使用.FindControls("NameOfFileUploadControl") 从网格中获取文件上传控件,循环遍历所有行。然后我检查 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 中:

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

那么为什么这个属性总是返回 false?

【问题讨论】:

    标签: asp.net vb.net file-upload


    【解决方案1】:

    这是 Ajax 更新面板的一个臭名昭著的问题。

    这里有一些文章链接可能会有所帮助。

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

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

    【讨论】:

    • 我知道这些,但这似乎不适合我的情况。我的问题是当我遍历网格视图并使用.Controls.FindControl(...) 获取文件上传控件时,我检查myFileObject.HasFile 是否返回false。当我查看我的网格视图时,我看到文本框中的文件路径是 fileupload 控件的标准路径。所以我不知道为什么它返回 false...
    猜你喜欢
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    • 2011-04-03
    相关资源
    最近更新 更多