ASP.NET形成AjaxFileUpload触发updatePanel问题

时间:2014-01-03 06:02:18

标签: c# asp.net ajaxcontroltoolkit

我试图了解如何获取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>

任何帮助将不胜感激!

干杯 添

1 个答案:

答案 0 :(得分:-2)

我同意Bikonja,如果在您的情况下未触发OnClientUploadComplete,请在后面的代码上的Databinding上手动触发它。应该管用。一切顺利。

同样在更新面板中,不要使用Ajax文件上传控件,尝试使用ASP,我认为您尝试实现的功能应该就这么简单。