Credo che tu non abbia letto bene il mio post...Originariamente inviato da hankmccoy
Scusa, ma se non posti il codice che hai usato non si capisce bene cosa hai fatto e dove sta il problema.
Io in tutti gli esempi che ho visto, il datagrid veniva sempre riempito con un datatable. Ho sempre usato questa soluzione e in tal caso mi ha sempre funzionato l'AutoGenerateColums anche con classi personalizzate.
Non ho detto che l'AutoGenerateColumns non funziona, ma che - assurdo - le colonne create automaticamente NON vengono aggiunte alla collection Columns interna al DataGrid.
Il riferimento che ho fatto al DataTable è per la soluzione al problema, non è direttamente correlato al problema che sto descrivendo e che si presenta con *qualunque* tipo di DataSource.
Non c'é nessun codice da postare, e nel caso non si fosse capito il problema NON è in un mio codice, ma nella struttura del DataGrid nel framework stesso.
Riporto la descrizione del problema, così che in due secondi possiate replicarlo anche voi:
1. Crea un nuovo webform
2. Aggiungici un datasource qualsiasi, di qualunque tipo
3. Dopo il DataBind fai una
"Response.Write (nomeDataGrid.Columns.Count)"
E dimmi che valore numerico ti stampa.
Se la DataSource che tu hai dato in pasto al DataGrid contiene, per esempio, 5 colonne, dovrebbe stampare a video 5, giusto?
Invece è zero!!
Questo perché per una deficienza del DataGrid stesso, le colonne generate automaticamente con AutoGenerateColumns non vengono aggiunte alla collection Columns, motivo per cui il .Count restituisce 0!!
Dopo questa prova, fai queste modifiche:
1. Aggiungi qualche BoundColumn "manualmente" col Property Builder, per esempio 2, ma senza cambiare il valore di AutoGenerateColumns, che da predefinito ovviamente è rimasto su True.
Prova adesso a fare "Response.Write (nomeDataGrid.Columns.Count)" dopo il DataBind, e dimmi cosa ti stampa.
Stamperà soltanto il numero delle colonne che TU hai manualmente aggiunto al DataGrid, come se le colonne generate automaticamente non ci fossero!!
Dovrebbe stampare 2 (le col. da te aggiunte) + 5 (le col. gener. autom. nell'esempio) = 7 e invece stampa 2!!
Prova poi a mettere AutoGenerateColumns su False, e a rifare "Response.Write (nomeDataGrid.Columns.Count)"
Il risultato non cambia!
Capito ora?


Rispondi quotando