Selezionare una riga di una gridview avendo il datakey corrisponente
Ermac non è online. Ultima attività: 30/05/2008 13.20.45Ermac
Inserito il: 09 maggio 2008 09.16
14 messaggi dal 09 nov 2007 Istalla Microsoft Silverlight!
Ho una GridView collegata ad una DetailsView, dopo l'inserimento di un nuovo record nella DetailsView vorrei che venga selezionato il record corrisponendte nella grid.

Nella query di inserimento recupero l'identity del record, ma la proprietà selected datakey è accessibile solo in lettura, quindi stavo cercando di recuperare l'index del relativo record e utilizzare la proprietà selectedindex, ma non riesco a capire come potrei farlo, qualcuno sa mica come potrei recuperarlo

Modificato da Ermac il 09 maggio 2008 09.17 -
Microsoft Most Valuable Professional
RE: Selezionare una riga di una gridview avendo il datakey corrisponente
Ricciolo non è online. Ultima attività: 10/10/2008 18.01.19Ricciolo
Inserito il: 12 maggio 2008 10.05
contributi / Top Poster / Community manager / blogs.aspitalia.com / Blog / 4601 messaggi dal 26 feb 2001 Istalla Microsoft Silverlight!
Dovresti quando inserisci la nuova riga, rifare il DataBind sulla griglia così lui ricarica.
Poi sfogli la collezione DataKeys fino a quando trovi l'id che ti interessa e sai quindi anche anche a che riga ti trovi. Cambi il SelectedIndex e sei apposto

Ciao

Il mio blog
Homepage
RE: Selezionare una riga di una gridview avendo il datakey corrisponente
Ermac non è online. Ultima attività: 30/05/2008 13.20.45Ermac
Inserito il: 13 maggio 2008 09.30
14 messaggi dal 09 nov 2007 Istalla Microsoft Silverlight!
Grazie per la risposta! Avevo già provato la tua soluzione, solamente che usando la paginazione la proprietà DataKeys restituisce i DataKey della pagina corrente.
Ora ho riprovato scorrendo tutte le pagine del gridview, e ce l'ho fatta! Mi sembra un po' pesante come script, ma è l'unica soluzione che ho trovato, lo metto a disposizione di tutti:

int tp = -1;
int tr = -1;
int paginaCorrente=grvIscritti.PageIndex;
for (int i = 0; i < grvIscritti.PageCount; i++)
{
grvIscritti.PageIndex = i;
grvIscritti.DataBind();
for (int j = 0; j < grvIscritti.DataKeys.Count; j++)
{
if ((int)grvIscritti.DataKeys[j].Value == DataKeyDaCercare)
{
tr = j;
tp = i;
}
}
}
if (tr != -1)
{
grvIscritti.PageIndex = tp;
grvIscritti.SelectedIndex = tr;
grvIscritti.DataBind();
}
else
grvIscritti.PageIndex = paginaCorrente;
Microsoft Most Valuable Professional
RE: Selezionare una riga di una gridview avendo il datakey corrisponente
Ricciolo non è online. Ultima attività: 10/10/2008 18.01.19Ricciolo
Inserito il: 13 maggio 2008 09.36
contributi / Top Poster / Community manager / blogs.aspitalia.com / Blog / 4601 messaggi dal 26 feb 2001 Istalla Microsoft Silverlight!
Ah pensavo fosse tutto in una pagina. In effetti la tua soluzione è un po' pesante se le pagine cominciano ad essere molte, ma è il metodo più "astratto".
Altrimenti dovresti ottenere il row_number() di quel record facendo una query ad hoc che dà il risultato della griglia così da sapere in che posizione si trova e calcolare quindi in che pagina si deve posizionare.
Se invece la tua tabella è in ordine della chiave primaria clustered, sai sempre che il record sarà posizionato alla fine e quindi ti puoi già mettere sull'ultima pagina

Ciao

Il mio blog
Homepage
RE: Selezionare una riga di una gridview avendo il datakey corrisponente
Ermac non è online. Ultima attività: 30/05/2008 13.20.45Ermac
Inserito il: 14 maggio 2008 10.07
14 messaggi dal 09 nov 2007 Istalla Microsoft Silverlight!
Metto a disposizione anche questa stored procedure con la soluzione molto più efficente

create procedure inserisciIscritto
(campi da inserire...
@RowNumber int output
)
as
begin
INSERT INTO (query di inserimento....)
set @NewId=(SELECT @@IDENTITY);
declare @RowNumberS int;
declare @idIscrizioneS int;

DECLARE Counter_cursor CURSOR FOR
select idIscrizione,ROW_NUMBER() OVER (ORDER BY cognome) from Iscrizioni
OPEN Counter_cursor
FETCH NEXT FROM Counter_cursor
INTO @idIscrizioneS,@RowNumberS
WHILE @@FETCH_STATUS = 0
BEGIN
if (@idIscrizioneS=@NewId)
set @RowNumber=@RowNumberS
FETCH NEXT FROM Counter_cursor
INTO @idIscrizioneS,@RowNumberS
END
CLOSE Counter_cursor
DEALLOCATE Counter_cursor
end

Vai a:
Torna al forum |   Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.


maltra - 582 pt
vladimiro - 451 pt
PeppeDotNet - 100 pt

Ultimi vincitori: maltra, vladimiro, PeppeDotNet

Iscriviti anche tu e raccogli punti. Questo mese in palio Windows Vista Ultimate, SQL Prompt e 1 ebook!



COMMUNITY
ULTIMI MESSAGGI


IN EVIDENZA
MISC
Powered by .db Forums