Come settare il datakeyname di una gridview

lunedì 02 febbraio 2009 - 17.26

Dan07 Profilo | Newbie

Ciao a tutti
di seguito il mio problema (sviluppo in vb.net con vs2005) : devo settare da codice la proprietà datakeyname di una gridview dopo che viene generata , nel senso che nel load la carico(senza settare la proprieta nel lato aspx) ma nell'evento rowcommand (o dopo un qualsiasi evento che posso scatenare subito dopo aver visualizzato il GV) devo settare questa proprietà ;
faccio un esempio:

Me.GridNominativi.DataKeyNames = .....

mi domandavo se devo mettere solo il nome del campo (es "id_mio") , come avrei fatto lato aspx oppure settare per ogni riga il valore dell'id che uso come datakey (ma non ho capito bene come si potrebbe fare)?

es.
Me.GridNominativi.DataKeyNames = New String() {"id_mio"}

scrivendo cosi ,prima di ricaricare il grid una seconda volta , l'evento rowcommand mi va in errore , come se non avesse preso il valore datakey

avete qualche suggerimento a proposito ???

grazie

Daniele

balfaz Profilo | Expert

ovviamente y datakey sono i valori chiave per il gridview, sia per modificare, eliminare, basta solo che le specifichi prima di fare il Databind del gridview una volta sola

Dim strKey() As String = {"id_campo1","id_campo2","id_campo3"}
GrVwCpp.DataKeyNames = strKey

dovresti solo crearti un vettore per essere gestito dal GridView, facci sapere.

"Che in questo 2009 i nostri codici possano sconvolgere il mondo."

Dan07 Profilo | Newbie

Ciao
grazie della risposta ... allora il mio problema è proprio farlo una sola volta nel senso che questa mia grid è in realta un WEBusercontrol che viene caricato dinamicamente all'interno di un ciclo (insieme ad altri wuc) in un altro WEBusercontrol che a sua volta fa parte di un oggetto di tipo wizard , scusa per il gioco di parole e per la poca chiarezza con cui mi sto cercando di spiegare ma il senso è che passa nel "load" (che in realta è la funzione di initialize(), la quale fa il bind della grid, che viene chiamata in questo ciclo subito dopo aver fatto un loadcontroll() ) piu volte quanti sono tutti i controlli e lo fa ad ogni evento scatenato ;
quindi se metto lato aspx il parametro datakeynames mi da: - errore elemento "id_" gia presente nel dizionario .... - perche appunto viene caricato piu volte e lo stesso se lo aggiungo come avevo fatto vedere nel primo post e quindi come mi hai mostrato tu ora perche passa piu volte per quel punto , inutile a dirti che il if not ispostback è inutile.
a questo punto non so dove settarlo .... ho provato nel rowdatabound del grid ma anche quello è un evento che si ripete ad ogni caricamento del controllo.

capisco la la confusione delle mie parole :) ma spero tu abbia capito lo stesso .

Daniele


ps(ho provato afare un controllo: se la proprietà datakey è settata allora non la setto piu , ma non sono riuscito e non so se poteva funzionare)

balfaz Profilo | Expert

devi darmi un paio di minuti per digerire questa spaghettata che mi hai appena lanciato in faccia.....aspetta che cerco di capire meglio

"Che in questo 2009 i nostri codici possano sconvolgere il mondo."

Dan07 Profilo | Newbie

ti capisco bene ... scusami :)
forse mi è venuta un idea ... sai come posso controllare se la proprietà datakey è gia stata settata ?

balfaz Profilo | Expert

in questo caso meglio di farti mangiare il pesce è che ti spiego come si pesca....
http://msdn.microsoft.com/it-it/library/system.web.ui.webcontrols.gridview.datakeys.aspx

cosi ci risparmiamo il tempo per lo più difficile, aspettiamo i tuoi aggiornamenti

"Che in questo 2009 i nostri codici possano sconvolgere il mondo."

Dan07 Profilo | Newbie

in realta non mi serve il datakey .... forse risolvo cancellando il valore di datakeynames ma non ho trovato nessun esempio al riguardo

miagrid.DataKeyNames.clear(...,...,...)

non ho trovato come usare questa funzione , ho provato una cosa del genere ma da errore e non mi fa compilare

Dim values() As String
values = Me.miagrid.DataKeyNames
miagrid.DataKeyNames.clear(value,0,value.Lenght)


Daniele

balfaz Profilo | Expert

infatti ti avevo inviato il link non per i datakey ma bensì per farti capire i metodi che ha questa proprietà. dammi un po di tempo e ti do una mano
"Che in questo 2009 i nostri codici possano sconvolgere il mondo."
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5