Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [ASP.NET] Aggiunta righe tabella

    Salve a tutti, facevo alcuni semplici testi su asp.net

    ho una tabella nella pagina default, chiamata "table1", ed un pulsante "button1"

    All'evento onclick è associato il seguente codice:

    Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim Riga As TableRow = New TableRow
    Dim Cella As TableCell = New TableCell
    Cella.Text = Now.ToShortTimeString
    Riga.Cells.Add(Cella)
    Table1.Rows.Add(Riga)
    End Sub

    Table1, ad ogni click, contiene l'ora, ma non conserva le righe con gli orari precedenti, come mai?

    Grazie, a tutti coloro che vorranno chiarirmi la situazione con una risposta

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    https://docs.microsoft.com/it-it/dot...ramework-4.7.2
    Nella documentazione è scritto che:

    È importante ricordare che qualsiasi aggiunta a livello di codice o la modifica di righe della tabella o le celle non vengono mantenute tra gli invii al server. Infatti, le righe della tabella e le celle sono controlli i propri e non alle proprietà del Table controllo. Per rendere persistenti le modifiche alla tabella, righe e celle devono essere ricostruite dopo ogni postback. Infatti, se sono previsti modifiche sostanziali, è consigliabile che una DataList, DataGrid, o GridView controllo utilizzare invece del Table controllo. Di conseguenza, il Table classe viene usata principalmente dagli sviluppatori di controlli.

    quella di sotto una possibile implementazione
    codice:
    <asp:Button ID="Button1" runat="server" Text="Aggiungi riga" /> 
    <asp:Button ID="Button2" runat="server" Text="Refresh" /> 
    <br /><br />
    <asp:Table ID="Table1" runat="server">
    </asp:Table>
    codice:
    Partial Class prove_a
        Inherits System.Web.UI.Page
    
        'rappresenta le righe della tabella
        Private rs As Righe = Nothing
    
        Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
            '---------------------------------------------------------------------------------------------------------------
            'Per rendere persistenti le modifiche alla tabella, righe e celle devono essere ricostruite dopo ogni postback.
            '---------------------------------------------------------------------------------------------------------------
    
            'recupero le righe salvate nel viewstate
            Dim jrs As Object = Me.ViewState("righe")
            If jrs Is Nothing Then
                rs = New Righe()
            Else
                rs = DirectCast(jrs, Righe)
            End If
    
            'e aggiorno la tabella coi vecchi dati
            For Each r As Riga In rs
                Dim tr As New TableRow()
                Dim tc As New TableCell()
                tc.Controls.Add(New LiteralControl(r.Data.ToString))
                tr.Cells.Add(tc)
                Me.Table1.Rows.Add(tr)
            Next
    
        End Sub
    
    
        Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
            'salvo nel viewstate le righe della tabella con la nuova riga
            Dim Adesso As DateTime = DateTime.Now
            rs.Add(New Riga(Adesso))
            Me.ViewState("righe") = rs
    
            'inserisco la riga nella tabella
            Dim tr As New TableRow()
            Dim tc As New TableCell()
            tc.Controls.Add(New LiteralControl(Adesso.ToString))
            tr.Cells.Add(tc)
            Me.Table1.Rows.Add(tr)
    
    
        End Sub
    
    
        '------------------------------------------------------------------------
        'definisco la classe serializzabile Riga, che contiene la proprietà data
        '------------------------------------------------------------------------
    
        <Serializable()>
        Private Class Riga
            Public Property Data As DateTime
            Public Sub New(data As DateTime)
                Me.Data = data
            End Sub
        End Class
    
        '------------------------------------------------------------------------
        'Definisco la classe serializzabile Righe ereditata da List(Of Riga)
        '------------------------------------------------------------------------
        <Serializable()>
        Private Class Righe : Inherits List(Of Riga)
        End Class
    
    
    End Class
    Pietro

  3. #3
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,886
    sarebbe piu' opportuno un gridview ed una insert in un file xml o in un database.

    questo metodo complica inutilmente cose semplici

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 © 2024 vBulletin Solutions, Inc. All rights reserved.