Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 33
  1. #1

    Cancellare un'immagine con un button

    Salve.
    Premetto che magari la domanda è idiota... ma sono abbastanza fuso dopo ore di tentativi!

    Ho una paginetta upload.aspx con annesso file upload.aspx.cs che mi gestisce l'upload di alcune immagini... tutto OK fin qui.

    Mi farebbe piacere piazzare accanto ad ogni immagine un pulsantino (un'icona, un link,... fate voi!) che mi permettesse di cancellare l'immagine corrispondente.

    Ho tentato con qualcosa del genere:

    codice:
    Button btnErase = new Button();
    btnErase.ID = "cancella"+ID;
    btnErase.click += new System.EventHandler(this.btnErase_click);
    ....
    Poco più sotto...

    codice:
    protected void btnErase_click(object sender, EventArgs e)
    {
      Response.Write ("Procedura di cancellazione");
    }
    Intanto per cominciare mi farebbe comodo anche identificare l'immagine da cancellare, ma se aggiungo un parametro alla funzione mi sa che mi dà errore!

    In secondo luogo... ma molto più importante... se provo a cliccare su uno qualunque dei bottoni mi ricarica la pagina senza scrivere nulla).

    Se avete voglia... questo è il codice del file .cs (ovviamente non state a leggere tutto... in generale funziona!)

    codice:
    using System;
    using System.Data;
    using System.Data.OleDb;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.IO;
    using ArtLabs.Pictures;
    
    
    public partial class _Default : System.Web.UI.Page 
    {
        private string StringaConnessioneAdmin = "Provider=SQLOLEDB.1;SERVER=sogno-003;DATABASE=alayacht;USER ID=ala_admin;PWD=admin;";
        private string ID; 
       
        private void InitializeComponent()
        {
            this.Load += new System.EventHandler(this.Page_Load);
        }
    
        private void Page_Load(object sender, EventArgs e)
        {
            ID = Request.QueryString["id"];
            if (!Page.IsPostBack)
            {
                mostraFoto(Convert.ToInt16(ID));
            }
        }
    
        protected void cmdSend_click(object sender, EventArgs e)
        {
            string ID = Request.QueryString["id"];
            string path = @"C:\Inetpub\wwwroot\alayacht\foto\"+ID;
    
            if (testo.Value == "")
                testo.Value = "immagine generica";
    
            // Determino se la directory esiste
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
                        
            if (File1.PostedFile != null)
            {
                // Riferimento al file inviato
                HttpPostedFile myFile = File1.PostedFile;
    
                // Dimensione del file
                int nFileLen = myFile.ContentLength;
    
                if (nFileLen > 0)
                {
                    // allocazione di un buffer di lettura
                    byte[] myData = new byte[nFileLen];
    
                    // Leggo il file dallo Stream e lo metto nel Buffer
                    myFile.InputStream.Read(myData, 0, nFileLen);
    
                    // Creo il nome del file
                    string strFilename = Path.GetFileName(myFile.FileName);
    
                    // Scrivo il file
                    WriteToFile(Server.MapPath("../foto/" + ID + "/" + strFilename), ref myData);
    
                    WriteToDB(Convert.ToInt16(ID), strFilename, testo.Value.ToString());
    
                    // ridimensiono l'immagine in Thumb
                    ArtLabs.Pictures.Engine p;
                    p = new ArtLabs.Pictures.Engine();
                       
                    p.ResizeToFile(Server.MapPath("../foto/"+ID+"/"+ strFilename), Server.MapPath("../foto/"+ID+"/tn_" + strFilename), new System.Drawing.Size(100, 100), System.Drawing.Imaging.ImageFormat.Jpeg, true, 100);
                    p.Dispose();
                    p = null;
    
                    mostraFoto(Convert.ToInt16(ID));
                }
            }
        }
    
           
        // Scrive il file nella destinazione corrente
        private void WriteToFile(string strPath, ref byte[] Buffer)
        {
            // Crea un file
            FileStream newFile = new FileStream(strPath, FileMode.Create);
    
            // Scrive i dati nel file
            newFile.Write(Buffer, 0, Buffer.Length);
    
            // Chiude il file
            newFile.Close();
        }
    
        // Scrivo i dati nel DB
        private void WriteToDB(int ins, string imm, string desc)
        { 
            OleDbConnection conn = new OleDbConnection(StringaConnessioneAdmin);
            conn.Open();
            OleDbCommand cmd = conn.CreateCommand();
            cmd.CommandText="INSERT INTO foto(ID_ins, immagine, descrizione) values ("+ins+", \'"+ imm + "\', \'"+ desc +"\');";
            
            int result = cmd.ExecuteNonQuery();
            cmd.Dispose();
            conn.Close();
            conn.Dispose();
       }
    
    
        private void mostraFoto(int idIns)
        {
            OleDbConnection conn = new OleDbConnection(StringaConnessioneAdmin);
            conn.Open();
            OleDbCommand cmd = conn.CreateCommand();
            cmd.CommandText = "SELECT * FROM foto WHERE ID_ins =" + idIns;
            OleDbDataReader dr = cmd.ExecuteReader();
    
            //string[] thumbs = Directory.GetFiles(Server.MapPath("../foto/" + ID), "tn_*");
    
            while(dr.Read())
            {
                TableRow tRow = new TableRow();
                TableCell delCell = new TableCell();
                TableCell imgCell = new TableCell();
                TableCell txtCell = new TableCell();
                Button cmdErase = new Button();
                cmdErase.ID = "cancella" + dr.GetValue(0);
                cmdErase.Click += new System.EventHandler(this.cmdErase_click);
                delCell.Controls.Add(cmdErase);
                tRow.Cells.Add(delCell);
                imgCell.Text = "<img src=\"../foto/" + idIns + "/tn_" + dr.GetValue(2) + "\" />
    ";
                tRow.Cells.Add(imgCell);
                txtCell.Text = "Descrizione: " + dr.GetValue(3);
                tRow.Cells.Add(txtCell);
                gallery.Rows.Add(tRow);
            }
    
            dr.Close();
            dr.Dispose();
    
        }
    
        protected void cmdErase_click(object sender, EventArgs e)
        {
            Response.Write("Procedura di cancellazione");
        }    
    }
    Il file aspx contiene semplicemente una form con campo File, campo Text e Tabella... niente di serio!

    Ci devo lavorare con sta roba...se mi risolvete il problema è una gran cosa!
    Dice il saggio:
    Non ci sono domande difficili, esistono solo risposte che non conosciamo!
    "Se qualcosa può andare male, lo farà" - Murphy

  2. #2
    Scusa ma no riesco a capire cosa vuoi cancellare ...

  3. #3
    sti pulsantini sono messi di fianco a delle immagini (caricate dinamicamente da un database).
    Io se clicco sul pulsante accanto all'immagine img01.jpg, questa immagine deve essere cancellata (dal DB, dalla cartellina e dallo schermo).

    Ho appena trovato un esempio che usa la funzione:
    protected void btnSubmit_Click(object sender, EventArgs e)

    ma questa funzione viene automaticamente invocata su tutti i click dei pulsanti submit o va associata ai pulsanti con un EventHandler?
    Dice il saggio:
    Non ci sono domande difficili, esistono solo risposte che non conosciamo!
    "Se qualcosa può andare male, lo farà" - Murphy

  4. #4
    prova a mettere dopo

    Response.Write("Procedura di cancellazione");
    Response.End();

    Non ti scrive nulla?

  5. #5
    Originariamente inviato da cleverboy
    sti pulsantini sono messi di fianco a delle immagini (caricate dinamicamente da un database).
    Io se clicco sul pulsante accanto all'immagine img01.jpg, questa immagine deve essere cancellata (dal DB, dalla cartellina e dallo schermo).

    Ho appena trovato un esempio che usa la funzione:
    protected void btnSubmit_Click(object sender, EventArgs e)

    ma questa funzione viene automaticamente invocata su tutti i click dei pulsanti submit o va associata ai pulsanti con un EventHandler?
    Le immagini come sono organizzate? Son dentro una GridView?

  6. #6
    Anche con response.end() non fa nulla...
    il click del bottone riesce solo ad aggiornare la pagina senza alcun altro effetto.
    Le immagini sono inserite in una <asp:Table> che viene popolata da codice (aggiungendo dinamicamente le righe e le celle che mi servono man mano che scorro l'oggetto DataReader).
    Dice il saggio:
    Non ci sono domande difficili, esistono solo risposte che non conosciamo!
    "Se qualcosa può andare male, lo farà" - Murphy

  7. #7
    se non fa nulla mi sa che dentro all'evento non ci entri proprio
    potresti usare un postback e prenderti l'id dell'immagine da cancellare dalla querystring

    Non ho mai registrato l'evento come hai fatto tu da codice, ma mi pare, non sono sicuro
    che tu abbia cannato la signature, registri il delegato this.btnErase_click
    ma poi lo chiami con due parametri, object e eventargs
    sei sicuro che sia giusto?
    Domando perche anche io nn sono sicuro

  8. #8
    Interessante... ma scendiamo nel dettaglio! Stai parlando con una mezza capra per quanto riguarda ASP.NET
    Dice il saggio:
    Non ci sono domande difficili, esistono solo risposte che non conosciamo!
    "Se qualcosa può andare male, lo farà" - Murphy

  9. #9
    aspetta un attimo che mi vado a riguardare una cosa nel libro

  10. #10
    La registrazione dell'evento sembra corretta

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.