57 messaggi dal 02 luglio 2002
Salve ragazzi ho il seguente problema ho un datagrid che associo ad un datatable

questo datatable crea tra le altre, una colonna di tipo double.
se provo ad inserire del testo con caratteri alfanumerci del tipo "aaa" in una cella del tipo sopra indicato non accetta il valore in quanto è dichiarata come tipo double.

Questo comportamento mi sta bene in quanto gestisce correttamente la situazione...

io però ho questa particolare esigenza cioè devo controllare che il valore immesso non possa essere negativo....
e vorrei una gestione simile a quella dell'immisione del testo...

come posso fare ??

vi riporto il codice incriminato---

DataColumn colDecimal = new DataColumn("DoubleCol");
colDecimal.DataType = System.Type.GetType("System.Double");
myTable.Columns.Add(colDecimal);
497 messaggi dal 09 giugno 2006
Contributi
Ciao.

Potresti intervenire a livello di datasource (eseguendo una validazione del dato - dipende però da cosa utilizzi come datasource) oppure puoi gestire l'evento DataGridView.CellValidating (.NET 2.0) nel qual caso hai la possibilità di controllare il valore ed annullare il dataentry dell'utente.

Ciao.

.:. Marcello Rutter .:.
57 messaggi dal 02 luglio 2002
non ho capito bene io vorrei sapere dove devo andare a scrivere il codice...
ad esempio su un evento di modifica della cella??

grazie
497 messaggi dal 09 giugno 2006
Contributi
Sì, è così. CellValidating è un evento (disponibile in .NET 2.0) all'interno del quali puoi scrivere il tuo codice che controlla il valore inserito ed eventualmente annulla l'inserimento (guarda la proprietà Cancel). Ti riporto l'esempio tratto da MSDN:

Private Sub dataGridView1_CellValidating(ByVal sender As Object, _
    ByVal e _
    As DataGridViewCellValidatingEventArgs) _
    Handles dataGridView1.CellValidating

    Me.dataGridView1.Rows(e.RowIndex).ErrorText = ""
    Dim newInteger As Integer

    ' Don't try to validate the 'new row' until finished 
    ' editing since there
    ' is not any point in validating its initial value.
    If dataGridView1.Rows(e.RowIndex).IsNewRow Then Return
    If Not Integer.TryParse(e.FormattedValue.ToString(), newInteger) _
        OrElse newInteger < 0 Then

        e.Cancel = True
        Me.dataGridView1.Rows(e.RowIndex).ErrorText = "the value must be a non-negative integer"

    End If
End Sub


Ciao.

.:. Marcello Rutter .:.

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.