我试图了解如何获取AjaxFileUpload控件(http://www.asp.net/AjaxLibrary/AjaxControlToolkitSampleSite/AjaxFileUpload/AjaxFileUpload.aspx)的“UploadedCompleteAll”事件以触发updatePanel上的更新,以显示用户上传的文件列表,包括最新的上传。
目前永远不会触发更新并显示到用户屏幕
我的代码如下:
的.aspx
<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server">
<asp:AjaxFileUpload id="videoUpload" runat="server"
MaximumNumberOfFiles="5"
OnUploadComplete="ajaxVideoUpload_OnUploadComplete"
OnUploadCompleteAll="ajaxVideoUpload_OnUploadCompleteAll"
ThrobberID="ThrobberImg"
/>
<asp:Image
id="ThrobberImg"
ImageUrl="~/Images/ajax-loader.gif"
Style="display:None"
runat="server" />
<asp:UpdatePanel runat="server" id="uploadedVid" UpdateMode="Always">
<ContentTemplate>
<asp:Repeater id="uploadedVideoFiles" runat="server">
<HeaderTemplate></HeaderTemplate>
<ItemTemplate>
<div class="videoDisplayBox">
<h2 id="videoTitle" runat="server"><%# DataBinder.Eval(Container.DataItem ,"fileName")%></h2>
<asp:Image runat="server" id="videoImage"></asp:Image>
</div>
</ItemTemplate>
<FooterTemplate></FooterTemplate>
</asp:Repeater>
</ContentTemplate>
</asp:UpdatePanel>
.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
AjaxControlToolkit.ToolkitScriptManager.GetCurrent(this).RegisterAsyncPostBackControl(videoUpload);
uploadedVideoFiles.DataSource = MiddleTier.MySession.Current.MyPerson.AllVideoUploads;
uploadedVideoFiles.DataBind();
}
protected void ajaxVideoUpload_OnUploadComplete(Object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
{
// Generate file path
TTPerson person = MiddleTier.MySession.Current.MyPerson;
string clubUid = MiddleTier.MySession.Current.MyPerson.MyClub.Uid.ToString();
string filePath = "~/VideoUpload/" + clubUid+ Convert.ToString(e.FileName);
string extension = System.IO.Path.GetExtension(e.FileName);
//following lines are saving to our database
TTPage curPage = this.Page as TTPage;
TTFileUploadVideo fileUploadVid = new TTFileUploadVideo(JadeSoftware.Joob.ClassPersistence.Transient);
fileUploadVid.FileName = e.FileName;
fileUploadVid.FileType = extension;
fileUploadVid.MyUploader = person;
fileUploadVid.UploadTimeStamp = System.DateTime.Now;
fileUploadVid.MyFileUploadGroup = null;
AC_TTFileUploadVideo ac = new AC_TTFileUploadVideo(curPage.connection, fileUploadVid, curPage, true);
ac.Create();
//savign to databse ends here
videoUpload.SaveAs(MapPath(filePath));
}
protected void ajaxVideoUpload_OnUploadCompleteAll(Object sender, AjaxControlToolkit.AjaxFileUploadCompleteAllEventArgs e)
{
uploadedVideoFiles.DataSource = MiddleTier.MySession.Current.MyPerson.AllVideoUploads;
uploadedVideoFiles.DataBind();
}
AjaxFileUpload的webconfig部分
<system.web>
<pages>
<controls>
<add tagPrefix="ajaxToolkit" assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" />
</controls>
</pages></system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<validation validateIntegratedModeConfiguration="false"/>
<handlers>
<add name="AjaxFileUploadHandler" verb="*" path="AjaxFileUploadHandler.axd" type="AjaxControlToolkit.AjaxFileUploadHandler, AjaxControlToolkit"/>
</handlers>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="4294967295"/>
</requestFiltering>
</security>
</system.webServer>
任何帮助将不胜感激!
干杯 添
答案 0 :(得分:-2)
我同意Bikonja,如果在您的情况下未触发OnClientUploadComplete,请在后面的代码上的Databinding上手动触发它。应该管用。一切顺利。
同样在更新面板中,不要使用Ajax文件上传控件,尝试使用ASP,我认为您尝试实现的功能应该就这么简单。