Colonne "extra" in gridview

giovedì 04 maggio 2006 - 11.48

maurizio79 Profilo | Junior Member

Ciao a tutti.
Ho una gridview che prende i dati da un sqldatasource, linea di comando "SELECT * FROM...". I campi mi servono tutti, anche se alcuni sono solo di servizio (Cioè li userò da codice ma non devono essere mostrati all' utente nella griglia).
Come faccio a recuperare i dati che non mostro nella griglia?
Faccio un esempio di come pensavo di risolvere io, ma non funge. Mi serviva il campo "categoria", lo avevo aggiunto nella griglia come colonna databound ed avevo intenzione di mettere la proprietà "Visible" di quella colonna su False. Provando a recuperare il dato con GridView1.SelectedRow.Cells(6).Text mi viene restituita solo una stringa vuota. Se "Visible" è True, il dato ovviamente viene restituito correttamente. Ho sbagliato strada? O è proprio impossibile?
Ciao e grazie, Maurizio

GvnnRules Profilo | Senior Member

Purtroppo è una menata ... non so come mai nel gridview le colonne nascoste le trattano in modo diverso dal vecchio datagrid ... comunque, potresti usare degli escamotage (si scriverà così?), crei una template column e inserirci dei label non visibili che popoli in code behind intercettando l'evento onRowDatabound, quando poi devi recuperare il valore non dovrai fare altro che utilizzare il metodo findControl(nomeControllo). oppure puoi usare i nuovi campi asp:hiddenfield al posto deel label, as you prefer
Peace
Gvnn

http://www.gvnn.it
http://www.sqlwebarchitect.org
http://blogs.dotnethell.it/gvnn/

maurizio79 Profilo | Junior Member

L' hiddenfield mi sembra un' ottima idea, oggi pomeriggio la provo e faccio sapere!
Ciao e grazie, Maurizio

maurizio79 Profilo | Junior Member

Perdona l' ignoranza, devo fare un passo indietro.
Se io ho un itemtemplate del genere
<itemtemplate>
<%#Eval("au_fname")%>
</itemtemplate>

posso ricavare il contenuto della cella così:

Dim firstNameLiteral As DataBoundLiteralControl = CType(selectRow.Cells(2).Controls(0), DataBoundLiteralControl)
Dim firstName As String = firstNameLiteral.Text

Ma se l' itemtemplate è realizzato così:
<ItemTemplate>
<asp:label ID="Label1" runat="server" text='<%# Bind("agg_categoria") %>'></asp:label>
</ItemTemplate>

Come faccio a recuperare il text della label? Non riesco a fare riferimento alla label in questione per recuperarne la proprietà text. Ovviamente vista la mia esigenza dovrei usare un hiddenfield, ma stavo cercando di superare prima lo scoglio più piccolo

Ciao e grazie, Maurizio

maurizio79 Profilo | Junior Member

Ho risolto! Esattamente 3 secondi dopo avere scritto ho avuto l' illuminazione!

Scusa la domanda scema, ciao e grazie mille.
Ciao e grazie, Maurizio

totti240282 Profilo | Guru

ma quindi del gridview se nascondo le colonne non posso recuperare il valore ??

nemmeno con mioGridView.DataKeys[0].Value
impostando le relative datakeys ???
C'è solo un capitano !!!!!!
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5