ASP.net problema con datagrid BoundColumn

mercoledì 17 novembre 2004 - 11.40

Alibomaye Profilo | Newbie

ho il seguente problema

in una pagina web ho inserito un datagrid a cui aggiungo dinamicamente delle colonne

1° carico il Dataset
2° scorro la tabella prelevandola dal dataset

For A = 0 To Ds.Tables("Molecole").Columns.Count - 1
Dim Ncol As New BoundColumn
Ncol.DataField = Ds.Tables("Molecole").Columns.Item(A).ColumnName()

'setto le proprietà itemstyle della colonna
Ncol = Set_PropColumn(A, Ncol)

'aggiungo la nuova colonna
Dtg.Columns.Add(Ncol)

Next

tutto sembra funzionare correttamente in quanto visualizzo i dati nel datagrid
ma quando vado a leggerli all'interno della stessa mi ritorna un errore
infatti è come se il datagrid avesse perso i dati pur mostrandomeli

non riesco a capire dove sbaglio

spero di essere stato chiaro

ciao
Luigi



Alibomaye Profilo | Newbie

>All'interno dell stessa pagina? quando fai questa operazione?
Si

>o salvi il datatable da qualche parte tipo cache o session oppure ad ogni postback devi recuperarti di nuovo >i dati
No

quello che non mi spiego è che se tramite il generatore proprietà del datagrid imposto manualmente i campi datafield tutto funziona correttamente, mentre se creo le colonne in modo dinamico non funzione
la cosa mi sembra molto strana e penso di non impostare una proprietà

Luigi


Alibomaye Profilo | Newbie

>riscrivi tutte le operazioni che fai altrimenti non riusciamo a capire
Ok

in questa pagina l'utente seleziona il tipo di visualizzazione, che possono essere diverse
esempio Elenco Molecole, Elenco Principi Attivi ecc..
quindi ho una listbox che elenca tutte le scelte possibili

l'idea è di creare in questa stessa pagine un unico datagrid, e in base alla scelta dell'utente visualizzare i dati relativi
le informazioni da presentare nel datagrid sono diverse qualora venisse scelta la visualizzazione delle molecole anzichè quella dei principi attivi.

quindi ho preparato un datagrid con una unica colonna pulsante seleziona
carico il dataset con i dati relativi alla scelta di che si vuole elencare "Molecole oppure Principi attivi"
creo le colonne nel datagrid e assegno la proprietà datafield in questo modo
............
.............
Da.Fill(Ds, "Molecole")
'eseguo un ciclo sul datatable per prendere i nomi delle colonne
For A = 0 To Ds.Tables("Molecole").Columns.Count - 1
'prelevo il nome del colonna dal datatable
Dim Nomecolonna As String = Ds.Tables("Molecole").Columns.Item(A).ColumnName

creo la colonna
Dim Ncol As New BoundColumn

assegno la proprietà datafield
Ncol.DataField = Nomecolonna

setto l' ItemStyle della colonna tramite questa funzione
Ncol = Set_PropColumn(A, Ncol)

aggiungo la colonna al datagrid
Dtg.Columns.Add(Ncol)
Next

Dtg.DataSource = Ds.Tables("Molecole").DefaultView
Dtg.DataBind()

credo che il codice riportato sia corretto ed infatti visualizzo correttamente i dati nel datagrid
sia che venga scelta la prima visualizzazione "Molecole" che la seconda "Principi Attivi"

l'utente tramite il tasto selezione del datagrid può visualizzare ulteriori dettagli in base al record scelto
ed è qui che sorge il problema
quando premo sul tasto seleziona, di un determinato record la griglia sembra vuota

questo succede solo impostando via codice la priprietà datafield della colonna
per prova ho impostato manualmente tramite il generatore di proprietà del datagrid
le colonne e il datafield
e in questo caso non ho nessun inconveniente

per ovvieare a questo problema esistono diverse soluzioni più o meno eleganti
ma vorrei capire il motivo di quello che a me sembra una anomalia
cioè se creo manualmente le colonne del datagrid
assegnando a tutte la proprietà datafield funziona tutto correttamante
e posso eseguire tutte le operazioni che ho scritto in precedenza
invece creando le colonne via codice perdo al primo postback la proprietà datafield
è come se la proprietà datafield non fosse resa persistente quando viene assegnata via codice

spero di essere stato + chiaro

grazie

ciao
Luigi





















Alibomaye Profilo | Newbie

Ok
Grazie di cuore

Buon lavoro
Luigi
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