こんにちは、とにかく AjaxFileUpload UploadComplete イベントの後に (Gridview または Repeater データ) を更新します。私がやりたいことは、AjaxFileUpload を使用して複数の画像をアップロードすることです。ファイルがアップロードされたら、それらの画像を GridView または Repeater コントロールに表示する必要があります。
ボタンクリックイベントが発生しない限り、これを行うことはできませんでした。
何か案は???
こんにちは、とにかく AjaxFileUpload UploadComplete イベントの後に (Gridview または Repeater データ) を更新します。私がやりたいことは、AjaxFileUpload を使用して複数の画像をアップロードすることです。ファイルがアップロードされたら、それらの画像を GridView または Repeater コントロールに表示する必要があります。
ボタンクリックイベントが発生しない限り、これを行うことはできませんでした。
何か案は???
非表示のボタンをフォームに配置し、この関数をOnClientUploadComplete
エクステンダーのイベント ハンドラーにアタッチします。
<asp:Button runat="server" ID="HiddenButton" OnClick="RefreshGridView" style="display:none;" />
function uploadComplete(sender, args) {
for (var index = 0; index < sender._filesInQueue.length; ++index) {
if (!sender._filesInQueue[index]._isUploaded) {
return;
}
}
__doPostBack("<%= HiddenButton.UniqueID %>", "");
})
次に、このボタンのクリックで GridView を更新します。
このコードは、アップロードされたファイルをチェックし、ファイル情報を含む電子メールを作成し、ファイルの対象者にリンクを電子メールで送信します。また、すべての情報をデータベースに保存します。アップロードページには、アップロードされたすべてのファイルを一覧表示するグリッドビューがあります。ファイルがロードされた後に更新されます。私はあなたがそれからあなたが必要とするものを得ることができると思います。
Partial Class upload_Default
Inherits System.Web.UI.Page
Protected Sub UploadButton2_Click(sender As Object, e As EventArgs)
Dim fileGuid As String
fileGuid = Guid.NewGuid.ToString
If AsyncFileUpload1.HasFile Then
If AsyncFileUpload1.FileContent.Length < 20971500 Then
Try
Dim fileSizeB As Integer = AsyncFileUpload1.PostedFile.ContentLength
Dim fileSize = fileSizeB / 1024
Dim filename As String = Path.GetFileName(AsyncFileUpload1.FileName)
Dim fileNameTwo As String = Trim(fileGuid) + Trim(filename)
Dim ExistPdfFilenamOPO As String
ExistPdfFilenamOPO = Server.MapPath("~/uploads/files/") & filename
If File.Exists(ExistPdfFilenamOPO) Then
Label2.Text = "File is already there"
Else
Dim saveDir As String = "\Uploads\files\"
Dim appPath As String = Request.PhysicalApplicationPath
Dim savePath As String = appPath + saveDir + _
Server.HtmlEncode(AsyncFileUpload1.FileName)
AsyncFileUpload1.SaveAs(savePath)
UploadStatusLabel2.Text = "Upload status: File uploaded."
Label2.Text = ""
' Email
Dim sr As New StreamReader(appPath & "EmailTemplates/FileUpload.htm")
Dim FName As String = TextBoxFName.Text
Dim LName As String = TextBoxLName.Text
Dim Email As String = TextBoxEmail.Text
Dim fullPath As String
fullPath = "https://website.com/uploads/default.aspx?fileGuid=" + fileGuid
Dim message As New MailMessage()
message.IsBodyHtml = True
message.From = New MailAddress("Your email")
message.[To].Add(New MailAddress(Email))
message.Subject = "The file you requested from SRTR"
message.Body = sr.ReadToEnd()
sr.Close()
message.Body = message.Body.Replace("<%FName%>", FName)
message.Body = message.Body.Replace("<%LName%>", LName)
message.Body = message.Body.Replace("<%Email%>", Email)
message.Body = message.Body.Replace("<%FileName%>", filename)
message.Body = message.Body.Replace("<%VerificationUrl%>", fullPath)
Dim client As New SmtpClient()
client.Send(message)
'Insert in to t_UploadFiles
Dim datenow As Date = System.DateTime.Now()
Dim ExDate As Date = datenow.AddDays(15)
Dim Downloaded As Boolean = False
Dim connectionString As String = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString
Dim updateSql As String = "INSERT t_UploadFiles (FileGuid, FileName, FileSize, FName, LName, Email, UploadDate, ExDate, Downloaded) SELECT @FileGuid, @FileName, @FileSize, @FName, @LName, @Email, @UploadDate, @ExDate, @Downloaded"
Using myConnection As New SqlConnection(connectionString)
myConnection.Open()
Dim myCommand As New SqlCommand(updateSql, myConnection)
myCommand.Parameters.AddWithValue("@FileGuid", fileGuid.Trim())
myCommand.Parameters.AddWithValue("@FileName", filename.Trim())
myCommand.Parameters.AddWithValue("@FileSize", fileSize)
myCommand.Parameters.AddWithValue("@FName", FName.Trim())
myCommand.Parameters.AddWithValue("@LName", LName.Trim())
myCommand.Parameters.AddWithValue("@Email", Email)
myCommand.Parameters.AddWithValue("@UploadDate", datenow)
myCommand.Parameters.AddWithValue("@ExDate", ExDate)
myCommand.Parameters.AddWithValue("@Downloaded", Downloaded)
myCommand.ExecuteNonQuery()
myConnection.Close()
End Using
articleListXX.DataBind()
End If
Catch ex As Exception
UploadStatusLabel2.Text = "Upload status: The file could not be uploaded.<br/>The following error occured: " + ex.Message
End Try
Else
UploadStatusLabel2.Text = "File is too large."
End If
Else
UploadStatusLabel2.Text = "You did not specify a file to upload."
End If
End Sub
End Class
あなたの貢献に感謝し、私のクエリを少し不明確にして申し訳ありません. 私は最終的にそれを理解しましたが、あなたのアイデアのためだけです。これが私のコードです。同じことがグリッドビューにも当てはまります。主な目的は、AjaxFileUpload コントロールを使用して画像をアップロードし、OnUploadComplete="AjaxFileUpload1_UploadComplete"
イベントでサムネイル画像を作成するメソッドを呼び出すことです。サムネイルが作成さpopulatePic()
れると、ユーザーがボタンを起動する必要なく、javascript _doPostBack() メソッドを使用してサムネイル画像をリピーター コントロールに取り込むメソッドが呼び出されます。
<script type="text/javascript">
function showUploadedPic()
{
__doPostBack('btnAdd', null);
}
</script>
<cc1:AjaxFileUpload ID="AjaxFileUpload1" runat="server" OnUploadComplete="AjaxFileUpload1_UploadComplete" ThrobberID="myThrobber" MaximumNumberOfFiles="10" AllowedFileTypes="jpg,jpeg" OnClientUploadComplete="showUploadedPic" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<asp:Image ID="Image1" runat="server" ImageUrl="<%# Container.DataItem %>" height="100"/>
</ItemTemplate>
</asp:Repeater>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnAdd" EventName="Click" />
</Triggers>
</asp:UpdatePanel>
コードビハインド
protected void btnAdd_Click(object sender, EventArgs e)
{
populatePic();
}
protected void AjaxFileUpload1_UploadComplete(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
{
string filePath = Server.MapPath("~/files/") + e.FileName;
AjaxFileUpload1.SaveAs(filePath);
createThumbnail();
}