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

    [VB.NET] Datagrid con CheckBox

    Ciao raga,
    ho un problema : ho riempito una colonna del datagrid con dei checkbox ma non riesco a leggerne lo stato (cioe' se un checkbox e' selezionato o meno).
    Ecco il codice aspx :

    <form id="Form1" method="post" runat="server">


    Schermo paniere</P>



    <asp:label id="lblMessaggio" runat="server" Height="36px" Width="100%">
    </asp:label>
    <asp:datagrid id="dGridPrestazioni" runat="server" SelectedIndex="-1">
    <Columns>
    <asp:TemplateColumn>
    <ItemTemplate>
    <asp:CheckBox id="elimina" Runat="server" />
    </ItemTemplate>
    </asp:TemplateColumn>
    </Columns>
    </asp:datagrid></P>
    <asp:Button id="btnCancella" runat="server" Text="Cancella">
    </asp:Button>
    </form>


    Ed ecco invece il codice che gestisce l'evento click sul bottone 'Cancella' :

    Private Sub btnCancella_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancella.Click
    Dim indice As Integer
    For indice = 0 To dGridPrestazioni.Items.Count - 1
    Dim cb As CheckBox = dGridPrestazioni.Items(indice).FindControl("elimin a")
    If cb.Checked Then
    Dim paniere As TempiAttesa.modello.Paniere = utente.getPaniere
    Try
    paniere.eliminaPrestazione(indice)
    Exit For
    Catch ex As Exception
    lblMessaggio.Text = "Si e' verificata un'eccezione" + ex.ToString
    End Try
    End If
    Next
    End Sub


    Come mai e come posso risolvere?

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ti passo un po' di codice. Sono due esempi un poco diversi ma che fanno la stessa cosa. Cioè cercaco tutti i checkbox selezionati in una griglia. A te il compito di adattarli.
    codice:
    <asp:CheckBox Runat="server"></asp:CheckBox>
    
    
        Private Function ChiaveSelezionate$()
            Dim cb As CheckBox
            Dim dgi As DataGridItem
            Dim id$ = ""
    
            For Each dgi In Me.DataGrid1.Items
                cb = CType(dgi.Cells(15).Controls(1), CheckBox)
                If cb.Checked Then
                    id &= "," & (dgi.Cells(0).Text)
                End If
            Next
            If (id.Length > 0) Then
                id = id.Substring(1)
            End If
            Return id
        End Function
    
    
    
    
    
    
    
    <asp:CheckBox ID="chkSelect" Runat="server" ></asp:CheckBox>
    
    
        Private Sub btnEval_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEval.Click
            Dim TotalPrice@
            Dim Count%
            Dim dgi As DataGridItem
    
            For Each dgi In Me.DataGrid1.Items
                'ricava il riferimento ai checkbox nella riga
                Dim cb As CheckBox = DirectCast(dgi.FindControl("chkselect"), CheckBox)
    
                'se selezionato ricava il prezzo e lo aggiunge al totale
                If cb.Checked Then
                    'recupera l'id, chiave di questa riga
                    Dim id$ = Me.DataGrid1.DataKeys(dgi.ItemIndex).ToString
    
                    'seleziona la riga nel datatable per questa chiave
                    Dim dr As DataRow = GetDataRow(id)
                    If Not dr.IsNull("price") Then
                        'aggiunge il prezzo al totale corrente
                        TotalPrice += CDec(dr("price"))
                        Count += 1
                    End If
                End If
                Me.Label1.Text = String.Format("Total price for {0} selected books is E {1:#,##0.00}", Count, TotalPrice)
            Next
    
        End Sub
    Si potrebbe fare anche meglio utilizzando un checkbox html dentro la griglia con name identico a tutti e value = ID

    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.