我正在设计一个表单,其中必须有一个上载控件和一个列表框来显示上载的文件。现在显示更改的唯一方法是刷新整个页面。我的老板希望上载文件自动显示在列表框中。经过几天的搜索,我一直找不到这样做的方法。
VB代码:
Protected Sub BootstrapUploadControl1_FileUploadComplete(sender As Object, e As DevExpress.Web.FileUploadCompleteEventArgs) Handles BootstrapUploadControl1.FileUploadComplete
Dim fileName = e.UploadedFile.FileName
Dim contentType = e.UploadedFile.ContentType
Try
Using fs As Stream = e.UploadedFile.FileContent
Using br As New BinaryReader(fs)
Dim bytes As Byte() = br.ReadBytes(CType(fs.Length, Integer))
Dim constr As String = "Data Source=mgm-sql-pub101;Initial Catalog=KidVid;Integrated Security=True;"
Dim query = "INSERT INTO Attachments(RequestID,FileName,FileBytes,Description) VALUES (@RequestID, @FileName, @FileBytes, @Description)"
Using con As SqlConnection = New SqlConnection(constr)
Dim cmd As SqlCommand = New SqlCommand(query, con)
cmd.Parameters.AddWithValue("RequestID", 1)
cmd.Parameters.AddWithValue("FileName", fileName)
cmd.Parameters.AddWithValue("FileBytes", bytes)
cmd.Parameters.AddWithValue("Description", "Binary File")
Try
con.Open()
If con.State = ConnectionState.Open Then
MsgBox("It's open! Yay!")
End If
Dim obj As Object = cmd.ExecuteNonQuery()
MsgBox("Record inserted successfully. ID = " & obj.ToString())
con.Close()
If con.State = ConnectionState.Closed Then
MsgBox("It's closed! Yay!")
End If
Catch ex As Exception
Throw ex
End Try
End Using
End Using
End Using
Catch ex As Exception
Throw New Exception(ex.Message)
End Try
End Sub
超文本:
<div class="col">
<h5><i class='fas fa-paperclip' style='font-size:24px'></i>Attachments:</h5>
<div class="row mb-3">
<div class="col-5">
<dx:BootstrapUploadControl ID="BootstrapUploadControl1" runat="server" AutoPostBack="true" UploadMode="Auto" ShowProgressPanel="True" ShowUploadButton="True"></dx:BootstrapUploadControl>
<dx:ASPxButton ID="ASPxButton1" runat="server" Text="ASPxButton" AutoPostBack="true" />
</div>
</div>
<h6><i class="fas fa-file-download" style="font-size: 24px"></i> Double-click filename to download file:</h6>
<dx:BootstrapListBox ID="AttachmentsListBox" runat="server" DataSourceID="KidVidAttachmentsDataSource" AutoPostBack="true">
<Fields>
<dx:BootstrapListBoxField FieldName="FileName"></dx:BootstrapListBoxField>
</Fields>
</dx:BootstrapListBox>
<asp:SqlDataSource runat="server" ID="KidVidAttachmentsDataSource" ConnectionString="<%$ ConnectionStrings:KidVidConnectionString %>" SelectCommand="SELECT [FileName] FROM [Attachments] ORDER BY [FileName]"></asp:SqlDataSource>
1条答案
按热度按时间ulydmbyx1#
所以,我不熟悉你正在使用的加载器,但是,你贴出的代码存根表明它的工作原理"很"像ajaxtoolkit。
这意味着在"所有"文件都被上载之后,不会发生回发。
如前所述,您可能需要一些允许上传文件的上传程序,并且不需要回发。
然而,在比如说4个文件完成上传之后,那么有一个回发触发器也不是那么糟糕,在那个时间点触发一个回发来刷新你的文件网格,或者列表框或者其他什么。
注意,你应该"找到"+"采用"一些上传程序来达到这个目的。一个数字"将"预览图片文件,甚至在上传开始之前。(然而,我真的对这个功能不感兴趣)。
所以,我使用Ajax工具包。它有3个事件(都不回发)。
启动负载短线。
一个文件上传完成存根。在这里我们保存文件,添加到我们的"文件列表"。在我下面的例子中,我用一个网格视图代替了一个列表框。
我有一些代码,如果这是一个PDF文件,我可以调出第一页来预览图像。对于图像,我只预览图像。
很多不错的上传程序也有一个"热点",你可以在其中拖放文件。
大多数是"分块"的,因此会显示一个进度条。被分块,那么文件大小是无限的,你不会得到一个巨大的浏览器"旋转器",而这样大的文件上传。
然而,一旦所有的文件都完成了,那么我做火灾客户端事件,我这样做,因为我需要/想更新我的上传文件列表。这就是"为什么"我问什么文件上传你正在使用。
你可以(我也可以用aj工具包文件上传器)做一个网络调用,获取新文件,然后填写列表框,但是,我使用的是网格视图,我只是做一个回发来刷新它。
结果如下所示:
那么,在每个文件上传的同时和之后?不,我不想回发。
然而,一旦文件列表被上传,我就会做一个回发来更新(刷新)网格视图。
所以,这在很大程度上取决于您使用的文件上传器。
如前所述,您的"代码存根"表明您的文件上传器具有此功能(完成后触发客户端javascript事件)。
因此,我所做的就是将一个按钮放到页面上,隐藏它(使用style = display none)。
而且aj文件加载器有一个"all done"客户端事件。
这是我的标价:
(not真的很重要,但作为一个fyi:)。
并且我有这个javascript代码来刷新网格视图。
所以,我实际上"点击"按钮后,一切都做了,因为aj文件加载不做回邮,我实际上想要一个!
和我的文件保存后,上传看起来相当相似,你有什么:
这个: