Controllo digitazione celle in datagridview

mercoledì 01 dicembre 2010 - 11.50
Tag Elenco Tags  VB.NET  |  .NET 3.5  |  Visual Studio Express  |  SQL Server Express

Miguel77 Profilo | Newbie

Ciao a tutti.
Mi sto avvicinando al linguaggio vb.net per realizzare semplici applicazioni.
in particolare ho realizzato un progammino che contiene una datagridview collegata a un DB sql 2008 express.
alcune colonne devono contenere solo valori numerici (interi o decimali a seconda dei casi)
é possibili fare in modo che se un utente cerca di digitare un carattere non numerico in una cella appartenente ad una di queste colonne il carattere non appaia?

ed ancora, é possibile, ma solo in alcune specifiche colonne, fare in modo che il punto venga riconosciuto come virgola?

grazie in anticipo.

Stroke Profilo | Junior Member

Per la prima domanda ci sono delle extension di ajax che consentono il filtro sui tasti digitati, su www.asp.net/ajax trovi tutto.
Per la seconda devi intercettare gli eventi updating e e inserting del gridview e fare un replace del valore in binding .
replace(e.value("NomeDellaColonna"),",",".").
userai e.newvalue("NomeDellaColonna") per updating
ciao
Furio
http://www.opsi.ws

darkeric Profilo | Senior Member

Private Sub DataGridView1_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit

Select Case DataGridView1.SelectedCells(0).ColumnIndex
Case 0
......
Case 1
controllo = DataGridView1.Rows(DataGridView1.CurrentCell.RowIndex).Cells(2).Value
controllo = Replace(controllo, ".", ",")
DataGridView1.Rows(DataGridView1.CurrentCell.RowIndex).Cells(2).Value = controllo
Case 2
....
.....
End Select

con questa procedura puoi sostituire il punto con la virgola
--------------------------------
Private Sub DataGridView1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles DataGridView1.KeyDown
Select Case DataGridView1.SelectedCells(0).ColumnIndex
Case 0
If e.KeyValue < xx and e.KeyValue > yy Then
e.SuppressKeyPress = True
End Select
End Sub
Questa procedura invece ti intercetta il codice del tasto premuto
non ricorda da quanto a quanto vanno i numerici ma puoi vederlo tu da debug
e.suppresskeypress = true ti annulla la pressione di quel tasto

spero di esserti stato di aiuto!

Ciao
Fabio

Miguel77 Profilo | Newbie

innanzitutto grazie per le risposte.
ho provato con i 2 metodi suggeriti da fabio ma:
-la procedura suggerita par sostituire il punto con la virgola non funziona. nel momento in cui inserisco un valore e poi lo salvo si solleva un eccezione dovuta al fatto che il valore inseruto dovrebbe essere di tipo numerico, ma non lo é.
-neanche la seconda procedura funziona, modificando un campo di una datagridview il KeyDown non viene intercettato.

avete altri suggerimenti?

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