GridView e DataKeyNames

giovedì 30 aprile 2009 - 13.00

4mane Profilo | Junior Member

Salve a tutti.
Ho un problema relativo alla proprietà DataKeyNames di una GridView: vengo subito al dunque.

Da codice [VB] carico i valori di una tabella all'interno di una gridview, impostando l'ID all'interno del Page_Load del DataKeyNames nel modo seguente:


... If Page.IsPostBack Then ... strSQL = "SELECT ID_User, Nome, Cognome, DataNascita FROM EliteUsers" Command.CommandText = strSQL Reader = Command.ExecuteReader() dtSearch = New DataTable() dtSearch.Load(Reader) gvUser.PageSize = 10 gvUser.AllowPaging = True gvUser.AllowSorting = True gvUser.DataSource = dtSearch gvUser.DataKeyNames = New String() {"ID_User"} gvUser.PagerSettings.PreviousPageImageUrl = "Images/previous.gif" gvUser.PagerSettings.NextPageImageUrl = "Images/next.gif" gvUser.PagerSettings.Visible = True gvUser.PagerSettings.Mode = PagerButtons.NextPrevious gvUser.PageIndex = 0 gvUser.DataBind() gvUser.Visible = True Reader.Close() ... End If ...

Nella pagina .aspx ho il seguente:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Il problema è che se scorro la paginazione (10 record per pagina) e faccio click sul pulsante di Edit o Select, il DataKeyNames punta al valore che ho nella prima pagina.
Qui di seguito il codice utilizzato all'interno della procedura SelectedIndexChanging:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Spero di essermi spiegato bene.
Grazie anticipatamente a tutti.

LuxSkyWalker Profilo | Junior Member

Ciao...

Non posso aiutarti ma ho lo stesso identico problema, solo che ce l'ho in C#...attendiamo che qualche guru ci dica come risolverlo!
LuxSkyWalker
Junior Developer .NET

balfaz Profilo | Expert

secondo me il concetto è corretto ma non sta ben implementato, non potete secondo me fare questo lavoro di assegnazione DataKN nell'evento pageload solamente ma anche nell'evento pagexindexchanging del gridview in maniera tale di mantenere aggiornata questa proprietà, ovviamente questo implica il dover realizzare una function che possa essere richiamata ogni volta che questo evento per il gridview viene realizzato cioe il cambio di pagina. Questo è quello che posso valutare ad occhio.

Spero sia stato di aiuto, poi raccontateci come va con questo inconveniente

Dove troverai sempre una mano disposta ad aiutarti è nell'estremo del tuo proprio braccio

4mane Profilo | Junior Member

Niente da fare.
Ho provato a ridefinire il DataKeyNames all'interno della procedura _SelectedIndexChanging, ma continua a puntare all'ID della pagina precedente.
Io ho paura che il problema sia la MasterPage, in quanto ho notato in debug che comunque la procedura sopra indicata viene chiamata a seguito del Page_Load della pagina che contiene la gridview.

4mane Profilo | Junior Member

Trovato il problema.
All'interno del codice vi era gridviewe1.PageIndex = 0
Questa veniva richiamata su cambio pagina e pertanto riseleziona il datakeyname della riga relativa alla prima pagina.
Grazie cmq a tutti coloro che sono intervenuti
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