7 messaggi dal 06 aprile 2011
Ciao a tutti
sto cercando di svelare gli arcani sulle System.Web.UI.WebControls.GridView.
Vorrei che qualcuno mi confermasse quanto ho capito....

se imposto la proprietà AutoGenerateColumns = true
in automatico la grid viene riempita con i valori (righe e colonne) contenute nel datasource

se invece imposto la proprietà AutoGenerateColumns = false
devo impostare TUTTO, righe e colonne....e le colonne lo faccio aggiungendo tanti System.Web.UI.WebControls.BoundField quante sono le colonne ( e gli imposto l'HeaderText che voglio io), mentre per le righe prima devo fare
gridView.DataSource = myDataSource;
gridView.DataBind();
e poi devo ciclare sulle row (System.Web.UI.WebControls.GridViewRow) della mia grid - che sono tutte inesorabilmente vuote - e riempirle con quanto contenuto nelle colonne della lista, in base ai miei criteri?
Non esiste un modo più veloce per dire "nella colonna 1 della gridView metti la colonna 7 della dataSource"??? e se si....come si fa???

Grazie a tutti
Pat
710 messaggi dal 13 novembre 2008
Contributi
se la sorgente dati è ad esempio un SqlDataSource puoi seguire quanto scritto nel link sotto, sia con AutoGenerateColumns = false, sia con AutoGenerateColumns = true.

nel secondo caso puoi posizionare le colonne nell'ordine che desideri

http://msdn.microsoft.com/it-it/library/system.web.ui.webcontrols.gridview.autogeneratecolumns.aspx

e la grid si riempe di dati come per magia, ovviamente con poche possibilità di controllo in caso di eventuali elaborazioni più complesse


nel caso ad esempio che la sorgente dati sia una lista del tipo List<T> dove T è una classe (es. prodotti, con proprietà id, descrizione, prezzo, ecc.), puoi assegnare alla grid i dati così

gridView.DataSource = miaLista;
gridView.DataBind();

e se AutoGenerateColumns = false usi nuovamente i BoundField

<asp:BoundField HeaderText="descrizione" DataField="descrizione" />

oppure

<asp:TemplateField>
<ItemTemplate>
<%# Eval("descrizione")%>
</ItemTemplate>
</asp:TemplateField>
72 messaggi dal 18 gennaio 2007
La risposta precedente e' perfetta ma, se vuoi avere il completo controllo sul DataBind di una GridView puoi usare i TemplateField insieme alla gestione dell'evento RowDataBound.
Io lo faccio praticamente sempre, mettendo anche qualche TemplateField non visibile in cui scrivo dati che mi servono poi per operazioni particolari.

Cmq, se si hanno necessita' particolari, come aggiungere, togliere e spostare delle colonne aggiuntive, oltre ad un certo insieme di fisse, io ultimamente creo 'al volo' header e righe dati di una HTML table dichiarata nella parte aspx perchè far la stessa cosa con la GridView (si può) comporta capriole sw peggiori di farsi tutto da se'.
Seccante dover fare tutto 'a manina' ma dà una libertà senza limiti! Prima o poi, avendo tempo, mi costruirò una specie di GridView come controllo server.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.