Blocco duplicati datagridview

giovedì 10 marzo 2011 - 08.54
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010  |  MySQL 5.1  |  Access (.mdb)  |  Office 2010  |  Internet explorer 8.0  |  HTML 5  |  SQL Reporting Services

maxottav Profilo | Newbie

utilizzo vb2010. popolo manualmente un datagridview inserendo un valore nella prima colonna, con il valore immesso vado poi a leggere in un db access i valori dei campi per le successive colonne. per fare ciò utilizzo il metrodo "CellValidated" del datagridview. dato che la lettura del codice sarà affidata ad un lettore di bar code devo evitare l'immissione di duplicati. come posso procedere per impedire l'aggiunta di nuove righe nel caso di codice duplicato?
con queste righe di codice determino se c'è duplicato:

If dgvFirmeBCode.Rows.Count > 0 Then For i As Integer = 0 To e.RowIndex - 2 If dgvFirmeBCode.Rows(i).Cells("TES1").Value = tes Then duplicato = True MsgBox("Articolo già inserito!") Exit For Else duplicato = False End If Next End If


whiteflash Profilo | Junior Member

Devi usare CellValidating non CellValidated perchè quest'ultimo arriva succesivamente dalla convalida..

in questo modo affinchè la cella non abbia un valore diverso non sarà possibile eseguire altre operazioni
ad esempio:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Newbie esperto VB.NET 2010 e WPF

maxottav Profilo | Newbie

ho seguito il tuo consiglio. è vero che così bloccano i duplicati ma l'immissione di codici corretti non produce una visualizzazione immediata delle altre colonne come con CEllValidated. utilizzando cellvalidating si deve tornare sopra e dare un enter

whiteflash Profilo | Junior Member

non riesco a capire cosa intendi con tornare indietro e premere invio per caricare i dati, dovresti postare un codice sorgente puù completo per capire dovè il tuo problema
Newbie esperto VB.NET 2010 e WPF

maxottav Profilo | Newbie

ho scoperto il mio errore. valorizzavo la variabile per effettuare il confronto in questo modo:

tes = dgvFirmeBCode.Rows(e.RowIndex).Cells("TES1").Value
finchè ho utilizzato l'evento CellValidated andava tutto bene ma cambiando l'evento in CellValidating la variabile TES non si valorizzava più. il problema l'ho risolto grazie al tuo consiglio valorizzando così la variabile:

tes = e.FormattedValue.ToString

grazie.
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5