Visualizzazione dei risultati da 1 a 2 su 2

Discussione: ArrayList + Postback

  1. #1

    ArrayList + Postback

    Salve a tutti. Sono nuovo in questo forum e sono un vero newbie con ASP.NET. Ma passiamo al sodo. Ho questo problema.
    Ho una pagina con un pulsante e una label. Di seguito ho riportato solo il codice C#:

    codice:
    ArrayList list;
    
    prot... Page_Load( ... )
    {
       if (ViewState["dati"] == null)
          list = new ArrayList();
       else
          list = (ArrayList) ViewState["dati"];
    
       Label1.Text = list.Count.ToString();
    }
    
    prot... Button1_Click( ... )
    {
       list.Add("Ciao");
       ViewState["dati"] = list;
    }

    Il problema è questo: faccio clic sul pulsante una volta e la label mi dice che ci sono 0 elementi anche se il clic del bottone dovrebbe aggiungerlo. Perchè? Dal secondo clic in poi inizia a contare in maniera corretta.

    A me sembra concettualmente giusto, però... Per favore aiutatemi perchè mi serve per la tesina della maturità che devo consegnare giovedì prossimo.

    Un grazie enorme a chi mi aiuterà!
    Dario

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    vedi se ti può andare: è in basic ma non avrai difficoltà a tradurlo

    codice:
    <%@ Page Language="VB" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <script runat="server">
    
        'dichiaro list variabile privata di tipo ArrayList
        Private list As ArrayList
        
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
            'imposto il focus nel textbox
            Me.TextBox1.Focus()
            
            'imposto Button1 pulsante predefinito quando si preme enter nel textbox
            SetButton(TextBox1, Button1)
            
            If Me.ViewState("dati") Is Nothing Then
                'se non c'è "dati" nel viewstate, creo una nuova istanza di ArrayList
                list = New ArrayList()
            Else
                'altrimenti recupero "dati" e la deserializzo in list
                list = DirectCast(Me.ViewState("dati"), ArrayList)
            End If
        End Sub
    
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
            'aggiungo alla lista il valore del textbox
            Me.list.Add(Me.TextBox1.Text)
            
            'azzero il textbox
            Me.TextBox1.Text = ""
            
            'memorizzo list nel viewstate
            Me.ViewState("dati") = list
            
            'dato che voglio stampare la lista dei valori immessi, creo un stringbuilder
            Dim sb As New StringBuilder()
            
            'aggiungo il numero di elementi della lista
            sb.Append(String.Format("n° {0} elementi nella lista
    ", list.Count))
            For i As Integer = 0 To list.Count - 1
                'aggiungo gli elementi della lista
                sb.Append(Me.list(i).ToString() & "
    ")
            Next
            'visuaalizzo la lista nel literal
            Me.Literal1.Text = sb.ToString()
        End Sub
    
        Sub SetButton(ByVal txt As TextBox, ByVal btn As Button)
            'imposto l'evento client onkeydown nel textbox.
            'quando si preme ENTER avviene il postback con Button1
            Dim formName As String
            Dim c As Control = btn.Parent
            While (Not (TypeOf c Is System.Web.UI.HtmlControls.HtmlForm))
                c = c.Parent
            End While
    
            If TypeOf c Is System.Web.UI.HtmlControls.HtmlForm Then
                formName = c.ClientID
            Else
                formName = "forms[0]"
            End If
    
            Dim jsString As String
            jsString = "if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {document." + formName + ".elements['" + btn.UniqueID + "'].click();return false;} else return true; "
            txt.Attributes.Add("onkeydown", jsString)
        End Sub
    
    </script>
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Pagina senza titolo</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
            <hr />
            <asp:Literal ID="Literal1" runat="server"></asp:Literal>
        
        </div>
        </form>
    </body>
    </html>
    Pietro

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.