PDA

View Full Version : problema VB.NET datagrid webform


Albez79
09-11-2006, 11:29
ciao a tutti !!!
mi servirebbe una mano per capire dove stà l'errore !!
dunque....al caricamento della pagina visualizzo una datagrid che si crea prendendo i dati da un recordset presente in un'altra classe webform1 e fin qui tutto bene!
poi cliccando su "button" presente nella pagina modifico il nome della colonna 1 e scrivo "ciao"
successivamente vorrei cambiare il colore della colonna 1 ma mi da un errore
"indice non compreso nell'intervallo"
perchè !?!?!?!
grazie

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Inserire qui il codice utente necessario per inizializzare la pagina


If Not Me.IsPostBack Then

FirstPage = CType(Context.Handler, WebForm1)
Adatta.Fill(TableGrid, FirstPage.y)
DataGrid1.DataSource = TableGrid
DataGrid1.DataBind()

Else

TableGrid.Columns(1).ColumnName = "ciao"
DataGrid1.DataSource = TableGrid
DataGrid1.Columns(1).HeaderStyle.BackColor = Color.Aqua
DataGrid1.DataBind()

End If


End Sub

Albez79
09-11-2006, 14:23
up

Riordian
09-11-2006, 14:40
TableGrid.Columns(1).ColumnName = "ciao"

quando passi da questa riga di codice i dati in TableGrid li hai già?
perchè nella porzione di codice che hai scritto non vedo dove riempi la table.

Albez79
09-11-2006, 16:03
si, tablegrid viene caricata al page_load ed essendo dichiarata come shared rimane in memoria...
infatti la tabella si visualizza correttamente anche dopo il click del button.
quello che non capisco è che datagrid1.columns.count mi da 0 !

Riordian
09-11-2006, 16:30
si, tablegrid viene caricata al page_load ed essendo dichiarata come shared rimane in memoria...
infatti la tabella si visualizza correttamente anche dopo il click del button.
quello che non capisco è che datagrid1.columns.count mi da 0 !

forse devi fare l'operazione dopo il databind, almeno io faccio sempre così quando lavoro sugli item della datagrid, credo sia quello il problema,effettivamente poi, se non fai databind, dati nella datagrid non ne dovresti avere.

Albez79
10-11-2006, 07:52
ho già provato anche a scriverlo dopo il databid ma niente da fare!

Albez79
10-11-2006, 08:01
ahahaha non ci credo se scrivo:

DataGrid1.Items(0).Cells.Count

mi ritorna corretto il numero delle colonne

se scrivo

DataGrid1.columns.count

mi da sempre 0


:rolleyes:

Riordian
10-11-2006, 08:12
dunque sono andato un po' a rinfrescarmi la memoria con le msdn visto che è parecchi che non uso la datagrid e per la proprietà columns dice questo:

Use this property to programmatically control the collection of columns in the DataGrid control. The Columns collection contains explicitly declared columns that get rendered in the DataGrid control.

Note Explicitly declared columns may be used in conjunction with automatically generated columns. When using both, explicitly declared columns will be rendered first, followed by the automatically generated columns. Automatically generated columns are not added to the Columns collection.

Cioè parla di collonne esplicitamente dichiarate, forse il problema sta qua. Io di solito le colonne le creavo via codice mettendo l'autogeneratecolumns a false e poi creandole via codice e così, lavorando sulle colonne non ho mai avuto problemi

Albez79
10-11-2006, 09:35
dunque sono andato un po' a rinfrescarmi la memoria con le msdn visto che è parecchi che non uso la datagrid e per la proprietà columns dice questo:



Cioè parla di collonne esplicitamente dichiarate, forse il problema sta qua. Io di solito le colonne le creavo via codice mettendo l'autogeneratecolumns a false e poi creandole via codice e così, lavorando sulle colonne non ho mai avuto problemi


Explicitly declared columns may be used in conjunction with auto-generated columns. When using both, explicitly declared columns will be rendered first, followed by the auto-generated columns. Auto-generated columns are not added to the Columns collection

grazie !!!

Riordian
10-11-2006, 10:01
grazie !!!

di nulla ;)