Try to use session variables :) 2009/7/15 mitdej <mit...@gmail.com>
> > Hi, > I'm building a user control with two buttons and a FileUpload control > for oploading/downloading files. > I've created 3 properties for keeping information about a file > (content, name and mime type) as bindable properties. > I'm calling explicit DataBind() in the Page_Load event of the hosting > control of my user control. > When the button is clicked, first the Page_Load event of the hosting > page is fired, the binding is happening then the Page_Load event of > the user control is fired. Until now everithing is OK. > The problem is when event handler for the button click is executing. > It seems like the execution of the event is running in a new object > instance of the user control. > This means that all the bound properties are lost. > So the question is: Is there a way to forbid the creation of a new > object of the user control. > > Here is the User control code: > public partial class UpDownAttachment : System.Web.UI.UserControl > { > public event EventHandler NewFileUploaded; > > [Bindable(true)] > public byte[] Content > { > get; set; > } > [Bindable(true)] > public string MIMEType > { > get; set; > } > [Bindable(true)] > public string FileName > { > get; set; > } > > > protected void Page_Load(object sender, EventArgs e) > { > } > > > protected void btnUploadAttachment_Click(object sender, > EventArgs e) > { > if(fuUploadAttachment.HasFile) > { > try > { > Content = fuUploadAttachment.FileBytes; > MIMEType = > fuUploadAttachment.PostedFile.ContentType; > FileName = fuUploadAttachment.FileName; > StatusLabel.Text = "Upload status: File > uploaded!"; > if (NewFileUploaded != null) > NewFileUploaded.Invoke(this, new EventArgs > ()); > } > catch(Exception ex) > { > StatusLabel.Text = "Upload status: The file could > not be uploaded. The following error occured: " + ex.Message; > } > } > } > > > protected void btnDownloadAttachment_Click(object sender, > EventArgs e) > { > if (Content!=null&&Content.Count() > 0) > { > Response.AppendHeader("Content-disposition", > "attachment; filename=" + FileName); > Response.ContentType = MIMEType; > Response.BinaryWrite(Content); > } > > > } > } > > > And parts of the host page: > > > <%@ Register TagPrefix="uc1" TagName="download" Src="~/ > CustomControls/ > UpDownAttachment.ascx" %> > ..... > <asp:FormView ID="EditFormView" runat="server" DefaultMode= "Insert" > DataSourceID="ProjectAttDataSource" > oniteminserting="EditFormView_ItemInserting" > DataKeyNames="ID" > onitemupdating="EditFormView_ItemUpdating" BackColor="#284775" > ForeColor="WhiteSmoke" > > ....... > <uc1:download ID="udaAttachment" runat="server" Content='<%# Eval > ("Attachment") %>' MIMEType='<%# Eval("MIME_Type") %>' FileName='<%# > Eval("Title") %>' OnNewFileUploaded="udaAttachment_NewFileUploaded" / > > > > > > > Thanks in advance, > mitdej >