Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di rumez
    Registrato dal
    Oct 2006
    Messaggi
    15

    Pulsante per inserire righe di una tabella

    Mi scuso se è già stato trattato..ma non ho trovato nelle mie ricerche un topic che facesse al mio caso..

    Ho una tabella di partenza con un'intestazione e una riga (contenente 2 celle)

    Tramite un pulsante vado a crearmi una riga nuova da accodare alle precedenti.-all'interno dell'evento clicked del pulsante ho questo codice:
    codice:
            Dim text_box1 As New TextBox
            Dim text_box2 As New TextBox
            Dim row As New TableRow
            Dim cell As New TableCell
            Dim cell2 As New TableCell
            Dim contatore As Integer
    
            contatore = tabella_prezzi.Rows.Count - 1
            text_box1.ID = "descrizione_" & contatore + 1
            text_box1.CssClass = "txt"
            text_box1.Columns = 40
    
            text_box2.ID = "prezzo_" & contatore + 1
            text_box2.CssClass = "txt"
    
            cell.Controls.Add(text_box1)
            cell2.Controls.Add(text_box2)
            row.Cells.Add(cell)
            row.Cells.Add(cell2)
            tabella_prezzi.Rows.Add(row)
    la procedura funziona correttamente la prima volta...se provo ad inserire una terza riga invece non funziona..resto sempre con 2 righe e non viene generato alcun errore...
    ho l'impressione che dopo aver premuto il pulsante la pagina prenda il rowcount della tabella originale (intestazione + prima riga) senza preoccuparsi delle righe che ho aggiunto manualmente..

    sapete aiutarmi?

  2. #2
    Utente di HTML.it L'avatar di rumez
    Registrato dal
    Oct 2006
    Messaggi
    15
    niente da fare..sembra che ogni volta che clicco il pulsante per aggiungere una nuova riga alla tabella al momento del postback si riazzeri tutto....


    io parto da due righe2 -> table.rows.count = 2

    ne aggiungo una e funziona -> table.row.count = 3

    se ne aggiungo un'altra purtroppo riparto da table.rows.count = 2

    sembra che non vengano salvate le modifiche


  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    questo è un esempio: attento, con IE7 la visualizzazione è penosa (nel submit, c'è un notevole sfarfallio dello schermo). Con Firefox ed Opera si vede benessimo.
    Questo con framework2. Col framework1 si vede pure con IE

    pagina aspx
    codice:
    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="aggiungi riga 4.aspx.vb" Inherits="CorsoApogeo_aggiungere_riga_a_tabella_aggiungi_riga_4" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Pagina senza titolo</title>
        <link href="../../stili/Styles.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <asp:LinkButton ID="LinkButton1" runat="server">Refresh</asp:LinkButton>
                <asp:Button ID="Button1" runat="server" Text="Aggiungi riga"></asp:Button>
                <asp:Button ID="Button2" runat="server" Text="Togli riga" CausesValidation="false"></asp:Button>
                <asp:Button ID="Button3" runat="server" Text="Recupera valori"></asp:Button>
                <hr />
                <asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
                
                <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
            </div>
        </form>
    </body>
    </html>
    codice
    codice:
    Option Strict On
    Partial Class CorsoApogeo_aggiungere_riga_a_tabella_aggiungi_riga_4
        Inherits System.Web.UI.Page
    
        Protected WithEvents t As System.Web.UI.WebControls.TextBox
        Protected WithEvents b As System.Web.UI.WebControls.Button
    
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Inserire qui il codice utente necessario per inizializzare la pagina
            If Not Me.IsPostBack Then
                Me.ViewState.Add("n", 0)
            Else
                Me.CreaTabella()
    
            End If
    
        End Sub
    
        '-------------------------------------------
        'crea la tabella
        '-------------------------------------------
        Private Sub CreaTabella()
            Dim Tabella As New Table
            Tabella.Attributes.Add("border", "1")
            Tabella.Attributes.Add("cellspacing", "1")
            Tabella.Attributes.Add("cellPadding", "4")
            Tabella.Attributes.Add("style", "border: none; background: transparent;")
            Tabella.ID = "table1"
    
            Dim i%
            Dim n% = CInt(Me.ViewState("n"))
            Dim r As TableRow
            Dim c As TableCell
            'Dim t As TextBox
            Dim v As CompareValidator
    
            For i = 1 To n
                r = New TableRow
                c = New TableCell
                t = New TextBox
                b = New Button
                With t
                    .ID = "c_" & i
                    '.Text = Trim(Me.Request.Form("c_" & i))
                    .Style.Add("border", "1px black solid")
                End With
                With b
                    .ID = "b_" & i
                    .Style.Add("border", "1px black solid")
                    .Text = "pulsante " & i
                    .CommandArgument = i.ToString
                End With
                AddHandler b.Click, AddressOf Me.b_Click
                v = New CompareValidator
                v.ID = "v_" & i
                v.ErrorMessage = "Il campo deve essere numerico"
                v.ControlToValidate = t.ID
                v.[Operator] = ValidationCompareOperator.DataTypeCheck
                v.Type = ValidationDataType.Integer
    
                c.Controls.Add(t)
                c.Controls.Add(v)
                c.Controls.Add(b)
                r.Cells.Add(c)
                Tabella.Rows.Add(r)
            Next
            Me.PlaceHolder1.Controls.Clear()
            Me.PlaceHolder1.Controls.Add(Tabella)
    
        End Sub
    
    
        '---------------------------------------------------
        'aggiunge una riga
        '---------------------------------------------------
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim n% = CInt(Me.ViewState("n")) + 1
            Me.ViewState.Add("n", n)
    
            Dim Tabella As Table = DirectCast(Me.PlaceHolder1.Controls(0), Table)
            Dim r As New TableRow
            Dim c As New TableCell
            'Dim t As New TextBox
            t = New TextBox
            With t
                .ID = "c_" & n
                '.Text = ""
                .Style.Add("border", "1px black solid")
            End With
            b = New Button
            With b
                .ID = "b_" & n
                .Style.Add("border", "1px black solid")
                .Text = "pulsante " & n
                .CommandArgument = n.ToString
            End With
            AddHandler b.Click, AddressOf Me.b_Click
    
            Dim v As New CompareValidator
            v.ID = "v_" & n
            v.ErrorMessage = "Il campo deve essere numerico"
            v.ControlToValidate = t.ID
            v.[Operator] = ValidationCompareOperator.DataTypeCheck
            v.Type = ValidationDataType.Integer
    
            c.VerticalAlign = VerticalAlign.Top
            c.HorizontalAlign = HorizontalAlign.Center
            c.Wrap = False
            c.Controls.Add(t)
            c.Controls.Add(v)
            c.Controls.Add(b)
            r.Cells.Add(c)
            Tabella.Rows.Add(r)
    
        End Sub
    
        '----------------------------------------------------------
        'toglie una riga
        '----------------------------------------------------------
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim n% = CInt(Me.ViewState("n")) - 1
            If n < 0 Then n = 0
            Me.ViewState.Add("n", n)
    
            Dim Tabella As Table = DirectCast(Me.PlaceHolder1.Controls(0), Table)
            If Tabella.Rows.Count > 0 Then Tabella.Rows.RemoveAt(Tabella.Rows.Count - 1)
    
        End Sub
    
        '-------------------------------------------------
        'recupera i valori dei textbox
        '-------------------------------------------------
        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            Dim Tabella As Table = DirectCast(Me.PlaceHolder1.Controls(0), Table)
            Dim i%
            Me.Label1.Text = ""
            For i = 0 To Tabella.Rows.Count - 1
                t = DirectCast(Tabella.Rows(i).Cells(0).Controls(0), TextBox)
                'PrintLn(t.Text, "valore di " & t.ID)
                Me.Label1.Text += "valore di " & t.ID & ": " & t.Text & "
    "
            Next
        End Sub
    
        '-----------------------------------------------------------------------
        'recupero il valore del textbox corrispondente al pulsante
        '-----------------------------------------------------------------------
        Private Sub b_Click(ByVal sender As Object, ByVal e As System.EventArgs)
            Dim btn As Button = DirectCast(sender, Button)
            Dim chiave$ = "c_" & btn.CommandArgument
            'PrintLn(DirectCast(Me.FindControl(chiave), TextBox).Text, chiave)
            Me.Label1.Text = chiave & ": " & DirectCast(Me.FindControl(chiave), TextBox).Text
        End Sub
    End Class
    Pietro

  4. #4
    Utente di HTML.it L'avatar di rumez
    Registrato dal
    Oct 2006
    Messaggi
    15
    ti ringrazio molto...la tua soluzione mi è stata utile per risolvere il problema..

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