Evento RowCommand di una grid

martedì 23 luglio 2013 - 18.08
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Visual Studio 2010  |  Internet explorer 8.0  |  Chrome  |  CSS 2.1

trinity Profilo | Guru

Ragazzi,
ci sto sbattendo la testa da ore ma non trovo il problema, in pratica ho una grid nella quale carico dei record provenienti da db funziona tutto, salvataggio e visualizzazione. Adesso nella grid ci sono due templatefield il primo c'è un button modifica che serve a riportare i dati della riga selezionata nei campi textbox per effettuare le modifiche. Funziona tutto ossia i dati vengono presi perfettamente nell'evento rowcommand ma non appaiono nella caselle textbox.
Allego i due file aspx e vb potete darci un'occhiata? Premetto ho fatto i test con e senza i trigger anche ma niente.

Grazie


Cirillo Fabio
www.trycontact.com
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

ridaria Profilo | Expert

>Ragazzi,
>ci sto sbattendo la testa da ore ma non trovo il problema, in
>pratica ho una grid nella quale carico dei record provenienti
>da db funziona tutto, salvataggio e visualizzazione. Adesso nella
>grid ci sono due templatefield

ecco il punto:

il templateField non genera l'evento RowCommand.
Questo evento viene scatenato dai BoundField e dai Button Field.

In luogo del template field che hai usato:
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="Btnmodifica" runat="server" Text="Modifica"
CommandName="update" />
</ItemTemplate>
<HeaderStyle Width="70px" />
</asp:TemplateField>

usa un ButtonFiled come questo:
<asp:ButtonField ButtonType="Image"
ImageUrl="~/amministrazione/images/prodotto_modifica.png" Text="Modifica"
CommandName ="Modifica">
<ItemStyle Width="15px" />
</asp:ButtonField>

e vedrai che l'evento RowCommand verra scatenato.

Per completezza ti dico che puoi anche usare un template field ma devi associargli una routine che viene lanciata al evento "click"

Esempio:
<asp:TemplateField>
<ItemTemplate>
<asp:Button ID="btnModifica" runat="server" Text="Modifica" OnCommand="ModificaDati" CommandName="Modifica" CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"/>
</ItemTemplate>
</asp:TemplateField>
Al click di questo pulsante verrà lanciata la funzione/routine ModificaDati, che va cotruita con due parametri come ti indico:

ModificaDati(object sender, CommandEventArgs e)

end sub
Non dimenticare che il parametro "e", in entrambi i casi ti da l'indice della riga corrente, da cui facilmente ottenere l'oggetto row e quindi a seguire i dati in essa contenuti, come appresso ti indico:

Dim index As Integer = Convert.ToInt32(e.CommandArgument)
Dim row As GridViewRow = GridView1.Rows(index)

idrecord = CInt(row.Cells(0).Text)
nome=row.Cells(1).Text
........
.......

A meno di specifiche esigenze conviene usare i BoundField e non i templateField :-)

ciao fammi sapere ;-)











Riccardo D'Aria

trinity Profilo | Guru

Grazie della risposta, il problema non sta nel fatto che l'evento rowcommand non viene generato a me tranquillamente viene eseguito ma sono i dati che a schermo non appaiono nelle rispettive textbox. Ho usato anche il metodo che mi hai postato del templatefiled ossia usando la routine modificadati e il codice "<%# CType(Container,GridViewRow).RowIndex %>" (linguaggio vb) ma i dati vengono presi tranquillamente dalla riga della grid vengono anche passati via codice vb agli oggetti textbox ma sulla pagina aspx non appare nulla i campi text restano vuoti.

E' questo che non riesco a capire dato che tutto funziona perfettamente.

Ciao e grazie
Cirillo Fabio
www.trycontact.com
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

trinity Profilo | Guru

Ho provato anche a fare il buttonfield ma niente i dati vengono presi dalla grid ma non appaiono nella textbox per esempio ho messo nell'evento rowcommand al click dell'imagebutton una label a cui passo un valore già predefinito. Persino questa label non prende tale valore rimane con la sue originale etichetta. Pertanto secondo me non avviene un refresh della pagina o qualcosa del genere. Fatto sta che non riesco ad andare avanti

ciao
Cirillo Fabio
www.trycontact.com
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

trinity Profilo | Guru

Ti allego i file aspx e vb con il buttonfield tutto funziona come detto nei post precedenti ma i dati non si visualizzano nelle textbox.

E non riesco a capire il perchè, ho unl'atra pagina aspx con sempre una grid e due textbox ho visto e rivisto il suo codice ed è lo stesso come tecnica che utilizzo in queste pagine aspx, li funziona tutto qui no. Boh

Ciao
Cirillo Fabio
www.trycontact.com
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

ridaria Profilo | Expert

Ho fatto dei test e funziona regolarmente, riguarda il tuo codice HTML.

PS. ma i dati dalla griglia li legge?


Io farei così:

Monterei in una pagina solo la griglia e le text Box e vedrei se fa ciò che deve fare.

Se lo fa pian piano aggiungerei tutti gli altri controlli che ci sono testandolo di volta in volta, fino a trovare l'intoppo se c'è.

CIAO fammi sapere
Riccardo D'Aria

trinity Profilo | Guru

Risolto grazie
Cirillo Fabio
www.trycontact.com
www.wondernet.biz
fabio@wondernet.biz
http://blogs.dotnethell.it/fabiocirillo/
http://wnetsoftware.blogspot.com

ridaria Profilo | Expert

:-) e cme hai risolto ?



Riccardo D'Aria
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5