Datagrid e celle

mercoledì 31 maggio 2006 - 17.56

giulyxiano Profilo | Junior Member

Come posso fare in modo che la cella di un datagrid possa accettare solo due caratteri o due numeri?
Ancora come posso controllare i valori immessi nella cella? Per esempio se la cella può accettae solo dei numeri compresi tra 18 e 30 se immetto 31 come poso fare che compare una box che dice valore non esatto? Grazie.

blood Profilo | Senior Member

>Come posso fare in modo che la cella di un datagrid possa accettare
>solo due caratteri o due numeri?
>Ancora come posso controllare i valori immessi nella cella? Per
>esempio se la cella può accettae solo dei numeri compresi tra
>18 e 30 se immetto 31 come poso fare che compare una box che
>dice valore non esatto? Grazie.

Puoi intercettare l'evento ColumnChanging del datatable sorgente della griglia ed usare l'oggetto e.Proposedvalue che è il valore appena immesso.Qui ti porto un esempio in cui ad ogni cambio di colonna converto il contenuto della cella appena inserito in maiuscolo:

Private Sub Cambio_colonna(ByVal sender As Object, ByVal e As DataColumnChangeEventArgs)

e.ProposedValue = e.ProposedValue.toupper()

End Sub

Per quanto riguarda il totale dei caratteri oppure se solo numeri o lettere lo puoi fare via db (usando poi i corretti Mapping Name sullo stile della griglia) oppure controllando sempre il valore appena immesso al cambio di riga o colonna.Dopodichè per far comparire una box basta il semplice:

Messagebox.Show("Valore non esatto",TITOLO,MessageBoxButtons.OK,MessageBoxIcon.Exclamation,MessageBoxDefaultButton.Button1)

Ciao, Paolo.

giulyxiano Profilo | Junior Member

Io cercavo un evento sul datagrid e non sul datatable .
Come posso recuperare il valore di una cella?Qual è il modo,
datagrid.CurrentCell?????? e poi cosa?.......grazie Giuliano

blood Profilo | Senior Member

>Io cercavo un evento sul datagrid e non sul datatable .
>Come posso recuperare il valore di una cella?Qual è il modo,
>datagrid.CurrentCell?????? e poi cosa?.......grazie Giuliano

Guarda che la sorgente della tua griglia è comunque sia un datatable quindi è completamente trasparente,eppoi non c'è un evento della griglia che ti permette di controllare se cambi colonna, oppure di vedere il valore che stai inserendo in quel momento (da quel che ne so io) quindi la soluzione più semplice è farlo dal datatable...comunque sia no, con CurrentCell ti ritorna o imposta la cella attiva, se vuoi recuperare un valore della griglia puoi fare

Me.datagrid.Item("NomeColonna")

oppure

Me.datagrid.Item(IndiceRiga,IndiceColonna)

Dove NomeColonna è una colonna dichiarata nello stile del tuo DataGrid...

giulyxiano Profilo | Junior Member

Questo codice che hai scritto tu

Private Sub Cambio_colonna(ByVal sender As Object, ByVal e As DataColumnChangeEventArgs)

e.ProposedValue = e.ProposedValue.toupper()

End Sub

va bene se clicco qualcosa!!!!
l'evento da chi è scatenato?
Nel mio codice questa sub da chi è richiamata?
Il DataColumnChangeEventArgs da dove gli viene?

blood Profilo | Senior Member

>Questo codice che hai scritto tu
>
>Private Sub Cambio_colonna(ByVal sender As Object, ByVal e As
>DataColumnChangeEventArgs)
>
>e.ProposedValue = e.ProposedValue.toupper()
>
>End Sub
>
>va bene se clicco qualcosa!!!!
>l'evento da chi è scatenato?
>Nel mio codice questa sub da chi è richiamata?
>Il DataColumnChangeEventArgs da dove gli viene?
>

si hai ragione, scusami mi sono dimenticato l'handler dell'evento

AddHandler ds.Tables(0).ColumnChanging, AddressOf Cambio_colonna

come ti ho già detto però è sul datatable...

giulyxiano Profilo | Junior Member

Ricapitolando:

Io ho la mia tabella (MiaTabella) che è il datasource del datagrid
quando mi compare il datagri con i dati ed io vado a modoficare il dato come si scatena l'evento?
Nel codice con quale evento devo creare la Sub per effettuare il controllo?
La mia tabella non la trovo nei controlli ......quindi?

AddHandler myTabella.ColumnChanging, AddressOf Cambio_colonna dove va messo?

blood Profilo | Senior Member

>Ricapitolando:
>
>Io ho la mia tabella (MiaTabella) che è il datasource del datagrid
>quando mi compare il datagri con i dati ed io vado a modoficare
>il dato come si scatena l'evento?
>Nel codice con quale evento devo creare la Sub per effettuare
>il controllo?
>La mia tabella non la trovo nei controlli ......quindi?
>
>AddHandler myTabella.ColumnChanging, AddressOf Cambio_colonna
>dove va messo?

Se ti sei creato un tuo DataTable è ovvio che non lo vedi tra i controlli, ma se hai usato un DataSet puoi fare:

AddHandler Me.dataset.Tables(numerotabella).ColumnChanging , AddressOf Cambio_colonna

In genere se hai un unica tabella il numero è 0.
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