50 messaggi dal 21 marzo 2002
Ciao
utilizzo editcommandcolumn per gestire le modifica di riga in una datagrid. Nell'evento item seleziono la riga da modificare con: DataGrid1.EditItemIndex = e.Item.DataSetIndex
e poi eseguo
BindData().

Il problema è che se nel frattempo (dal caricamento del dataset alla scelta di modificare una riga) qualcuno ha inserito o cancellato un record nel db, la selezione avviene sfalsata di una riga.

Come posso fare?

Grazie


575 messaggi dal 06 settembre 2002
Contributi
devi impostare il DataKeys al datagrid ossia la chiave primaria, indice o contatore che usi per la tabella nel db in modo da recuperare l'id esatto di qul record.
evento delete
Sub datagrid_delete(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
Dim keyValue As String = CStr(datagrid.DataKeys(e.Item.ItemIndex))


poi se ti cancellano quel record sotto o te lo modificanon (meno peggio) questo è un problema che affligge milioni di programmatori con svariate soluzioni.
50 messaggi dal 21 marzo 2002
Grazie per la risposta, ma il problema che evidenziavo è nell'evento edit (quindi la modifica) che mi seleziona un indice che nel rebind successivo potrebbe non corrispondere più al record selezionato, ma venire sfalsato da un nuovo record inserito o cancellato.

Ciao a tutti
575 messaggi dal 06 settembre 2002
Contributi
allora è
Sub griglia_Edit(ByVal Sender As Object, ByVal E As DataGridCommandEventArgs)
grdnews.EditItemIndex = E.Item.ItemIndex
BindData()
End Sub
50 messaggi dal 21 marzo 2002
Se leggi il mio primo post il tuo suggerimento è proprio quello che ho scritto che produce il problema. Forse non mi spiego bene.

Grazie comunque

575 messaggi dal 06 settembre 2002
Contributi
allora lavora sulla chiave come nel delete invece di lavorare sull'indice recupera l'id del record
Dim keyValue As String = CStr(datagrid.DataKeys(e.Item.ItemIndex))
in modo da puntare direttamente sul quel record e non sull'indice della griglia.
spero di essermi spiegato.
ciao

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.