Hi Qui,
I've seen this issue as I just started to search for a truly AJAXified FileUpload control. I believe you will see similar issue with any FileUpload control if loaded dynamically. The trick is (at least for me) to drop a "dummy" Uploader control to the ASPX page which is static and not dynamic, with just the ID and runat attribute. This will ensure that between postbacks the control's hooking are there ready to use. Once this is done the and you click the button it should just pop up the file browsing window. I use an web application and this trick has fixed it for me.
Regards,
Ben