+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: [ASP.NET] Button in grid ed eventi

  1. #1
    L'avatar di cippalippa
    cippalippa non è in linea Topo di biblioteca
    Post
    2,526

    [ASP.NET] Button in grid ed eventi

    Ciao a tutti,
    In una grid ho dei bottoni, in serie, che visualizzano dei dati.
    codice:
    <asp:GridView ID="GridView3" runat="server" AutoGenerateColumns="False" Width="80%"> 
        <Columns> 
            <ItemTemplate> 
    
                <asp:Button ID="Button1" runat="server" Text='<%#Eval("ID") %>' >
                </asp:Button>
                <asp:Button ID="Button2" runat="server" Text='<%#Eval("Nome") %>' >
                </asp:Button>
                
            </ItemTemplate> 
            </asp:TemplateField> 
    </Columns> 
    </asp:GridView>
    Pensavo di gestire l'evento di pressione di B1, B2 tramite la classica sub in VB.NET

    codice:
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
    End Sub
    Invece mi sono accorto che il bottone nella grid non viene visto dal compilatore come un oggetto qualsiasi.
    Come posso intercettare l'evento di pressione del bottone che ho premuto e ricavare il valore del suo text?
    Spero di essere stato chiaro...

    per Pierluca: Hai visto che adesso mi sono ricordato del tag?
    Se ascolto conosco, se vedo capisco, se faccio imparo.

  2. #2
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,026
    ,...anche in questo caso vale il discorso fatto per le asp:HyperLinkField, nel senso che con le GridView puoi anche usare le asp:ButtonField...per quanto riguarda la domanda/esempio, quando viene cliccato un pulsante in una griglia la pagina esegue un postback e scatena l'evento RowCommand(evento della griglia):
    codice:
    <asp:GridView ID="GridView1" runat="server">
            <Columns>
            <asp:TemplateField ShowHeader="False"> 
            <ItemTemplate>
                    <asp:Button ID="btnTest" runat="server" Text='<%#Eval("colText") %>' CommandName="test"></asp:Button>
            </ItemTemplate>
            </asp:TemplateField> 
        </Columns> 
            </asp:GridView>
    ...mentre per verificare il command:
    codice:
    Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
            If (e.CommandName = "test") Then
                'Click sul button
            End If
        End Sub

  3. #3
    L'avatar di cippalippa
    cippalippa non è in linea Topo di biblioteca
    Post
    2,526
    Ho visto nella grid che ci sono i buttonfield, ma non ho capito come usarli.

    Forse non sono stato chiaro.

    In questa grid ho, dentro a bottoni, due colonne. Una di numeri progressivi, una di nomi.
    Io vorrei riuscire, premendo un bottone a caso, riuscire a:
    1) Ottenere il numero (oppure il nome) visualizzato nel bottone.
    2) Ottenere in nome del bottone premuto.
    3) iniziare una routine VB.
    Non so a priori il contenuto del bottone, lo devo ricavare.

    Per quanto riguarda 3) forse la posso gestire da rowcommand...
    Ma per 1) e 2) come faccio?
    Ultima modifica di cippalippa; 24-03-2008 17:11 
    Se ascolto conosco, se vedo capisco, se faccio imparo.

  4. #4
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,026
    Quote Originariamente inviato da cippalippa Visualizza il messaggio
    Forse non sono stato chiaro.
    ...certo che sei stato chiaro e che non leggi quello che ti scrivono le persone ...
    Quote Originariamente inviato da cippalippa Visualizza il messaggio
    Per quanto riguarda 2) forse la posso gestire da rowcommand...
    ...nell'evento a seconda del commandname puoi richiamare le varie sub
    Quote Originariamente inviato da cippalippa Visualizza il messaggio
    Ma per 1) come faccio?
    ...una tecnica è quella di associare il valore che vuoi recuperare a CommandArgument:
    codice:
    <asp:Button ID="btnTest" runat="server" Text='<%#Eval("colText") %>' CommandName="test" CommandArgument='<%#Eval("colText") %>'></asp:Button>
    ...poi basterà recuperare il valore nell'evento RowCommand....

  5. #5
    L'avatar di cippalippa
    cippalippa non è in linea Topo di biblioteca
    Post
    2,526
    Nel frattempo che mi rispondevi ho cambiato la domanda...
    Dovrei recuperare anche il nome del Button!

    Forse lo gestico con CommandName?
    Se ascolto conosco, se vedo capisco, se faccio imparo.

  6. #6
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,026
    ...nello stesso modo....nel tuo esempio ci sono due pulsanti uno che mostra l'id l'altro il nome...in uno devi inserire nel commandargument l'id nell'altro il nome

  7. #7
    L'avatar di cippalippa
    cippalippa non è in linea Topo di biblioteca
    Post
    2,526
    Grazie. Ho capito!
    Se ascolto conosco, se vedo capisco, se faccio imparo.

  8. #8
    L'avatar di cippalippa
    cippalippa non è in linea Topo di biblioteca
    Post
    2,526
    Un accidente!
    Allora, ho fatto come hai detto tu.
    Ho messo i pulsanti.
    Ho messo CommandName e CommandArgument.
    In rowCommand ho messo solamente un messaggio, quindi scatta in ogni caso.
    Ho messo come postback una pagina bianca.

    codice:
    Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
        msgbox("Pippo")
    end sub
    Ho fatto click sul bottone, e non è successo nulla! Cosa ho sbagliato? Dove è finito Pippo?
    (in pratica: non scatta RowCommand)
    Ultima modifica di cippalippa; 24-03-2008 19:19 
    Se ascolto conosco, se vedo capisco, se faccio imparo.

  9. #9
    L'avatar di SignIn
    SignIn non è in linea Scribacchino
    Luogo
    Milano
    Post
    1,026
    Quote Originariamente inviato da cippalippa Visualizza il messaggio
    Un accidente!
    Allora, ho fatto come hai detto tu.
    ...non è vero, dato che il codice che ti ho postato è diverso da questo:
    Quote Originariamente inviato da cippalippa Visualizza il messaggio
    codice:
    Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
        msgbox("Pippo")
    end sub
    ...di nuovo l'uso di message box in codice asp.net(assurdo )

    Quote Originariamente inviato da cippalippa Visualizza il messaggio
    Ho fatto click sul bottone, e non è successo nulla! Cosa ho sbagliato? Dove è finito Pippo?
    (in pratica: non scatta RowCommand)
    ...hai messo un breakpoint?...e soprattutto rivedi il codice che ho postato ti salti i pezzi...poi sarei proprio curioso di vedere il codice di markup

  10. #10
    L'avatar di cippalippa
    cippalippa non è in linea Topo di biblioteca
    Post
    2,526
    Il button l'ho scritto in questo modo:

    <asp:Button ID="Button1" runat="server" Text='<%#Eval("pkID") %>' CommandName="pkID" CommandArgument='<%#Eval("pkID") %>' PostBackUrl="Lavoro.aspx"></asp:Button>

    Nella finestra funziona regolarmente.
    Come postback ho messo una pagina bianca.
    in VB solo questo:

    Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs ) Handles GridView1.RowCommand
    MsgBox("Pippo")

    Mi bastava capire quando scattava l'evento.
    Se mi vedi con tutti questi "Pippo", è perchè li uso come breackpoint.
    (poi li cancello! )
    Se preferisci posso scrivere console.writeline, per me è lo stesso, anche se il messaggio mi piace di più!

    Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs ) Handles GridView1.RowCommand
    If (e.CommandName = "pkID") Then
    MsgBox("Pippo")

    Ho anche scritto così, ma quando ho visto che non succedeva niente, ho tolto l'if
    Ultima modifica di cippalippa; 24-03-2008 20:37 
    Se ascolto conosco, se vedo capisco, se faccio imparo.

+ Rispondi al Thread
Pagina 1 di 2 12 ultimoultimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi