Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it L'avatar di osgb
    Registrato dal
    May 2004
    residenza
    Monza
    Messaggi
    179

    Recuperare ID checkbox da repeater

    Salve, ho bisogno di salvare in un database access i campi checkbox evidenziati dall'utente.
    Nella pagina aspx ho messo:

    codice:
    <asp:Repeater ID="Repeater1" runat="server" DataSourceID="AccessDataSource1">
    <ItemTemplate>
    <asp:CheckBox ID="CheckBox1" runat="server" /><%# Eval("Cognome")%> <%# Eval("Nome")%> <%# Eval("[Data di nascita]", "({0: dd MMM yyyy} )")%>
    
    </ItemTemplate>
    </asp:Repeater>
    Nel Code Behind vb cosa metto per recuperare ogni singolo dato spuntato?
    Non posso mettere

    codice:
    Dim Spunta As String = CheckBox1.Text
    Anche perchè ne recupererei uno solo...
    Grazie mille.

  2. #2
    devi effettuare un ciclo sugli items del repeater, e per ognuno verificare se ha la spunta:

    codice:
    foreach (RepeaterItem item in Repeater1.Items)
    {
        bool selezionato;
        var checkControl = item.FindControl("CheckBox1");
        if (checkControl != null)
            if ((checkControl as CheckBox).Checked)
            {
                //fai le tue operazioni
            }
    }

  3. #3
    Utente di HTML.it L'avatar di osgb
    Registrato dal
    May 2004
    residenza
    Monza
    Messaggi
    179
    Ciao, grazie per avermi risposto, ma non riesco a capire come passare i valori nell'insert del database. Ripeto, io uso access e per passare i valori uso vb e più precisamente:

    codice:
    ...
    cmdSql.Parameters.AddWithValue("@Testo", NTesto)
    ...
    dove NTesto deve essere il valore di ogni CheckBox1.

    Spero di essere stato chiaro e grazie ancora.

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Alla pressione del tasto salva (esterno al repeater):

    codice:
     
    Protected Sub btnSalva_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSalva.Click
    'Parte Dichiarativa per oggetti Database (cmdSql, connessione etc.)
    
            For Each item As RepeaterItem In Repeater1.Items
                Dim checkControl As CheckBox = CType(item.FindControl("CheckBox1"), CheckBox)
                If checkControl IsNot Nothing Then
                    If checkControl.Checked Then
                        cmdSql.Parameters.AddWithValue("@Testo", checkControl.Text)
                    End If
                End If
            Next
    
    'Parte di Commit del salvataggio nel DB
    End Sub
    Se vuoi salvare il TESTO delle checkbox. Ma non vedo il senso, a meno che non siano diverse l'una dall'altra...

    Cosa devi salvare esattamente nel DB, quale campo ?

  5. #5
    Utente di HTML.it L'avatar di osgb
    Registrato dal
    May 2004
    residenza
    Monza
    Messaggi
    179
    E' un sito di una scuola calcio e agli allenatori voglio dare la possibilità di fare delle convocazioni per le partite, perciò da un database verrebbero estrapolati i vari giocatori della squadra che, a sua volta vengono scelti per la partita stessa (ceckbox - ognuno un giocatore).
    Nel database dove salverò i dati ci sono fino a 30 campi dove verrebbero salvati i vari nomi, in modo da avere un elenco dei giocatori che faranno la partita.
    Una cosa del genere l'avevo già fatta con il semplice asp. Cambiavo di volta in volta l'ID del ceckbox in modo da averlo diverso uno dall'altro. Con asp.net la cosa è un po' più complicata.

    Grazie.
    Il sito è: www.cosov.it

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Metti una label nascosta in un ItemTemplate del repeater e recuperala nel ciclo di cui sopra allo stesso modo in cui recuperiamo la checkbox.

    Essa dovrà contenere l'ID del calciatore. (In alternativa puoi usare la proprietà DataItem("nomecampo") di "item").

    Una volta recuperato lo salvi, cosi' (se ho ben capito) avrai l'elenco (IDs) dei calciatori che partecipano a quella determinata partita (altro ID, dovrebbe essere).

  7. #7
    purtroppo la soluzione lato DB che hai adottato è errata, ed è anche complicata da gestire.

    Dovresti implementare una cosa del genere:

    tabella Partite:
    idPartita, data, campodigioco, arbitro, ecc. ecc.

    tabella convocazioni:
    idPartita, idgiocatore


    ecco che invecie di avere ncampi nella tabella partite (uno per ogni giocatore convocato), hai una tabella di relazione per specificare i giocatori della partita.

    detto questo, con il foreach che ti ho fatto vedere prima, per ogni checkbox selezionato, salvi il dato nella tabella "convocazioni"

    ciao

  8. #8
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Cio' che ti si dice qui sopra e' esatto, mi sono dimenticato di puntualizzartelo.

    Non dovresti memorizzare i calciatori nei campi, ma in differenti records in pratica.

  9. #9
    Utente di HTML.it L'avatar di osgb
    Registrato dal
    May 2004
    residenza
    Monza
    Messaggi
    179
    Potrei anche registrare tutti i giocatori in un record unico con la formula IDgiocatore + IDgiocatore...

    Resto dell'idea che era molto più semplice asp:

    codice:
    <% Do while not RS_A.eof %>
    ...
    <input name="GIOC_<%= Numr %>" type="checkbox" value="<% = (RS_A("Cognome")& " 
    ") %>" /><%= Numr %>.<% = (RS_A("Cognome")& " " & RS_A("Nome")) %>
    
    <% RS_A.Movenext 
    Numr = Numr + 1 
    loop %>
    ...
    In questo modo avevo il checkbox con un valore diverso ad ogni riga: GIOC_1, GIOC_2...

  10. #10
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Dovresti cambiare modo di pensare, asp (per fortuna) non è asp.net

    Comunque, nella tabella non puoi progettare ad un campo per ogni giocatore.
    Se devi aggiungerne altri (immagina di ammettere un numero di riserve in piu', tanto per fare un esempio) devi modificare la tabella, e ciò non è molto produttivo...

    (E comunque, le CheckBox puoi produrle anche dinamicamente con ID diverso...)

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.