FileUpload control does not work in Update Panel and workaround

February 11, 2009

All file upload controls (includes asp, telerik, componentart, component factory and others) does not working in any AJAX update panels. This means if your upload control located in an update panel, control does not post the file. If you look to the posted file property of the control, you will see it null.

This is a limitation comes from the XmlHttpRequest component, used in all AJAX frameworks for asynchronous calls to the application. In order to upload a file you should perform a full page postback.

<asp:updatepanel id=”UpdatePanel1″ runat=”server” updatemode=”conditional”><br /><triggers><br />  <asp:postbacktrigger controlid=”Button1″><br /></triggers><br /><contenttemplate><br /><ews:datepicker id=”DatePicker1″ runat=”server” usingupdatepanel=”True” onselectionchanged=”DatePicker1_SelectionChanged”><br /> <asp:label id=”Label1″ runat=”server”></asp:Label><br /> <asp:fileupload id=”FileUpload1″ runat=”server”><br /> <asp:button id=”Button1″ runat=”server” text=”Upload” onclick=”Button1_Click”></contenttemplate><br /></asp:UpdatePanel>

The key is at the Triggers. Please note this will post a full postback even it’s inside a Update Panel.

Solutions are actually available for gmail like async file upload using iframe:

http://vinayakshrestha.wordpress.com/2007/03/13/uploading-files-using-aspnet-ajax-extensions/

http://msmvps.com/blogs/luisabreu/archive/2006/12/14/uploading-files-without-a-full-postback.aspx


AJAX Calendar Extender only shows partial weekdays

August 18, 2008

The Calendar extender in my page only shows 5 days in a week, instead
of a full 7 days. There is no parameters controlling this behavior.
After some investigation I found that’s because I have defined padding
in my stylesheet for TD:

TD {padding-left:5px;padding-right:5px;}

Generally it’s not a good idea to change the general TD style,
especially third-party control will be used. I put the padding in my
own table class then problem solved!


Follow

Get every new post delivered to your Inbox.