2011-06-09 4 views
0

J'ai un problème lors de l'écriture d'un événement pour le contrôle utilisateur ImageUpload.Événements de contrôle utilisateur

Je souhaite ajouter un événement qui se déclenche sur un clic sur l'image, dans ce cas le bouton vert ok. J'écris du code pour l'événement mais il se soulève sur pageload() et sur la publication, donc cela pose problème -> Le chemin de l'image fourni pour le téléchargement de l'image devient clair après le chargement de l'image mais sur une page encore et encore sur chaque actualisation de la page.

Code de contrôle utilisateur

public partial class Gallery_Controls_ImgUpload : System.Web.UI.UserControl 
{  
    protected void Page_Load(object sender, EventArgs e) 
    { } 

    public string TxtDesc  
    {   
     get {return txtimgdesc.Text;}   
     set { txtimgdesc.Text = value; } 
    }  
    public string TxtImgName  
    {   
     get { return txtimgname.Text; }   
     set { txtimgname.Text = value; }  
    }  
    public FileUpload ImgUpld  
    {   
     get { return ImgUpload; }   
     //set { ImgUpload = value; }  
    }  
    public string ImgAttr  
    {   
     get { return ImgUpload.Attributes["onchange"]; }   
     set { ImgUpload.Attributes["onchange"] = value; }  
    }  

    public event EventHandler ImgBtnUpClick;  
    protected void imgbtnok_Click(object sender,EventArgs e)  
    {   
     ImgBtnUpClick(ImgUpload, e);  
    } 

code pour l'ajout de contrôle à la page et télécharger un fichier

public partial class Gallery_iupload : System.Web.UI.Page 
{  
    ASP.gallery_controls_imgupload_ascx upctrl; 

    protected void Page_Load(object sender, EventArgs e)  
    { 
      upctrl = (ASP.gallery_controls_imgupload_ascx)LoadControl ("Controls/ImgUpload.ascx"); 
      upctrl.ImgBtnUpClick += new EventHandler(Upload); 
      upctrl.ImgAttr = "checkFileExtension(this); return false;"; 
      PlaceHolderupctrl.Controls.Add(upctrl);      
    } 
    protected void Upload(object sender, EventArgs e) 
    {   
     TextBox txtbximgname = (TextBox)upctrl.FindControl("txtimgname"); 
     TextBox txtbxdesc = (TextBox)upctrl.FindControl("txtimgdesc"); 
     FileUpload Imgload = (FileUpload)sender; 
     if (Imgload.HasFile) 
      try{ 
       Imgload.SaveAs("C:\\Uploads\\" + txtbximgname.Text + ".jpg");     
       Label1.Text = "File name: " + Imgload.PostedFile.FileName + "<br>" + 
       Imgload.PostedFile.ContentLength + " kb<br>" +"Content type: " + 
       Imgload.PostedFile.ContentType; 
       } 
      catch (Exception ex) 
      { 
       Label1.Text = "ERROR: " + ex.Message.ToString(); 
      } 
     else 
     { 
      Label1.Text = "You have not specified a file."; 
     } 
    } 
} 

Répondre

0

vous devez mettre un chèque de IsPostBack dans votre page_load:

protected void Page_Load(object sender, EventArgs e)   
{   
    if (!Page.IsPostBack) 
    { upctrl = (ASP.gallery_controls_imgupload_ascx)LoadControl ("Controls/ImgUpload.ascx");    
     upctrl.ImgBtnUpClick += new EventHandler(Upload);   
     upctrl.ImgAttr = "checkFileExtension(this); return false;";    
     PlaceHolderupctrl.Controls.Add(upctrl);  
    }     
} 
Questions connexes