Ciao a tutti, vi spiego quello che vorrei fare.

Pagina aspx con una casella di testo e un button, al click del button, voglio memorizzare l'informazione scritta nella casella di testo in una lista (la lista successivamente verrÓ salvata in un viewstate) e visualizzarla in una riga di una tabella dinamica (asp:Table). La riga creata dovrÓ contenere il nome scritto nella casella di testo(nella prima colonna) e un linkbutton con la scritta "elimina" (nella seconda colonna).

Al click del linkbutton voglio eliminare l'informazione dalla lista e la riga della tabella contenente il pulsante selezionato.

NON VOGLIO USARE LA GRIDVIEW..

Io ho provato a scrivere questo codice, per´┐Ż per aggiungere o eliminare la riga devo cliccare 2 volte!!!!

Mi potreste aiutare´┐Ż.


codice:
<body>
    <form id="form1" runat="server">
        <asp:TextBox ID="txtnome" runat="server"></asp:TextBox>
        <asp:TextBox ID="txtcognome" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
        <asp:Table ID="tbl" runat="server" />
    </form>
</body>
codice:
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;

public partial class Index : System.Web.UI.Page
{
    private List<Auto> miaList;
    private List<LinkButton> mieibutton;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (ViewState["contenitore"] is List<Auto>)
        {
            miaList = (List<Auto>)this.ViewState["contenitore"];
   
        }else{
            miaList = new List<Auto>();
            this.ViewState["contenitore"] = miaList;
        }
        mieibutton = new List<LinkButton>();
        for (int i = 0; i < miaList.Count+1; i++){
            mieibutton.Add(new LinkButton());
            mieibutton[i].Command += mioAscoltatore; //l'evento command ´┐Ż simile al click, con la differenza che l'argomento passato al metodo mioascoltatore ´┐Ż CommandEventArgs e non EventArgs
        }
        this.caricaTabella();
    }

    private void mioAscoltatore(object sender, CommandEventArgs e)
    {
        int IDrigaDaEliminare = Convert.ToInt16(e.CommandArgument);// il metodo CommandArgument, esisto solamente perch´┐Ż nella firma abbiamo l'oggetto CommandArgument
        miaList = (List<Auto>)this.ViewState["contenitore"];
        miaList.RemoveAt(IDrigaDaEliminare);
        this.ViewState["contenitore"] = miaList;
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        miaList = (List<Auto>)this.ViewState["contenitore"];
        miaList.Add(new Auto(txtnome.Text,txtcognome.Text));
        this.ViewState["contenitore"] = miaList;
    }
    public void caricaTabella(){
        miaList = (List<Auto>)this.ViewState["contenitore"];
        if (miaList.Count > 0)
        {
            tbl.Controls.Clear(); //Tabella inserita nella pagina HTML

            for (int i = 0; i < miaList.Count; i++)
            {
                TableRow rowNew = new TableRow(); //Creo una nuova riga (TR HTML)
                tbl.Controls.Add(rowNew); //Inserisco la riga nella tabella precedentemente creata


                TableCell colonna1 = new TableCell(); //Creo la 1´┐Ż cella della tabella (TD in HTML)
                colonna1.Width = Unit.Pixel(100); //specifico la larghezza della cella (TD in HTML)
                Label nome = new Label(); //Istanzio un oggetto label 
                nome.Text = miaList[i].Nome; //Memorizzo il nome contenuto nella lista
                colonna1.Controls.Add(nome); //aggiungo l'oggetto label nella cella (TD in HTML)

                TableCell colonna2 = new TableCell(); //Creo la 2´┐Ż cella della tabella (TD in HTML)
                colonna2.Width = Unit.Pixel(100);
                Label cognome = new Label();
                cognome.Text = miaList[i].Cognome;
                colonna2.Controls.Add(cognome);

                TableCell colonna3 = new TableCell(); //Creo la 3´┐Ż cella della tabella (TD in HTML)
                colonna3.Width = Unit.Pixel(100);

                mieibutton[i].Text = "Elimina"; //elimina ´┐Ż il nome visibile dall'utente
                mieibutton[i].CommandArgument = Convert.ToString(i); //aggiungo un argomento che corrisponde all'indice dell'array


                colonna3.Controls.Add(mieibutton[i]);

                //aggiungo le 3 celle (TD) alla riga (TR)
                rowNew.Controls.Add(colonna1);
                rowNew.Controls.Add(colonna2);
                rowNew.Controls.Add(colonna3);
            }
        }
     }
}