Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [VB.NET] classe ereditata da [DataGridColumnStyle]

    Ho creato un oggetto in VB.NET ereditato da DataGridColumnStyle per gestire le ComboBox in un DataGrid. Sono riuscito a fare tutto, però mi viene generata un eccezione di tipo System.NullReferenceException quando dal metodo Commit (ereditato da DataGridColumnStyle) ritorno un valore False per annullare le modifiche :master: . Questo è il codice che uso:
    codice:
    Public Class ComboBoxColumn
            Inherits DataGridColumnStyle
    ...
        Protected Overrides Function Commit(ByVal dataSource As System.Windows.Forms.CurrencyManager, ByVal rowNum As Integer) As Boolean
            ...
            Dim bValidated As New System.ComponentModel.CancelEventArgs(False)
            RaiseEvent Validate(m_ComboBox.SelectedValue, bValidated)
            Return not bValidated.Cancel
            ...
        End Function
        ...
    End Class


    Qualcuno a idea da cosa possa essere dovuto o qualche esempio di un oggetto ereditato da DataGridColumnStyle che ritorni valori False dal metodo commit?
    Grazie a chiunque provi a darmi una mano


  2. #2
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    ciao, se mi dai il codice mi passo il tempo è ti do una mano volentieri. Ho anch'io vb.net e potrei provare a debuggare. Tu gust is megl che uan :gren:

    magari spiegami di preciso cosa fai, e dimmi anche come fare per far scattare l'errore

  3. #3
    è un po comlicato da mandare, uso un po di oggetti e un database access... mo provo a vedere se riesco ad estrarne una versione "Light" da poter testare velocemente.


  4. #4
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    Originariamente inviato da DeBe99
    è un po comlicato da mandare, uso un po di oggetti e un database access... mo provo a vedere se riesco ad estrarne una versione "Light" da poter testare velocemente.

    ascolta, mi basta anche sapere a parole cosa vuoi ottenere, cosa hai fatto e cos'è che ti genera l'errore ed io cerco di crearmi un progettino simile quantomeno per riprodurre il tutto

    PS: io lavoro su framework 1.1, problemi?

  5. #5
    Utente di HTML.it L'avatar di biste
    Registrato dal
    Apr 2001
    Messaggi
    877
    Ti consiglio di scaricare e dare un'occhiata a questo esempio:

    http://www.syncfusion.com/faq/winfor...oxcombo_vb.zip

    HTH
    UGIdotNET
    Microsoft .NET MCAD
    C++, C#, VB6, VB.NET, ASP, ASP.NET
    SQL Server 2000

  6. #6
    In pratica voglio creare un nuovo stile di colonn per una datagrid. In .NET esistono due tipi di colonna che si possono usare, DataGridBoolColumnStyle e DataGridTextStyle che consentono di editare i dati nella datagrid rispettivamente con un checkbox o una casella di testo; io voglio crearne uno per le caselle combinate. Per fare questo devi implementere un nuovo oggetto che eredita DagaGridColumnStyle, aggiungere il riferimento privato al tuo controllo e gestire tutti i metodi MustOvverides.
    In MSDN (cercando "Cenni preliminari DataGridColumnStyle") ho trovato un esempio per il DateTimePicker, che però presenta meno difficoltà dal punto di vista della validazione e comunque funziona anche ritornando un false da Commit(), nel caso di combobox vorrei ritornare false se la proprietà SelectedValue è nothing(Nessun valore selezionato) o se non riesco a impostare il valore della colonna del datagrid, quando succede però mi viene generata l'eccezzione sopra.


  7. #7
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    potrebbe essere qui il problema?

    m_ComboBox.SelectedValue

    che l'oggetto non è instanziato, oppure ti distrugge l'instanza appena chiami la classe e quindi lo trova a null appena chiami la commit?

  8. #8
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    potrebbe esserci anche un errore nell'evento validate e siccome non è gestito, l'exception ritorna al chiamante ripercorrendo la strada al contrario, finchè non trova un gestore. Questo non c'è e l'errore ti risulta sul chiamante....

  9. #9
    Il selectedValue potrebbe essere null, ed è proprio questo il caso che devo gestire, nel caso, reimposto sia il value della combo che della colonna del datagrid e poi restituisco false il metodo validate non ha errori, in quanto per ora non fà nient'altro che annullare l'operazione.
    Quendo viene generata l'eccezione il cursore si ferma sulla dichiarazione di form (una volta eseguito sia il commit che l'abort (viene eseguito quando ritorni false dal commit)

    @biste: ho dato un'occhiata al progetto che mi hai linkato, ma non è esattamente quello che fà al caso mio, qui se immetti un valore non incluso nella lista (ho modificato dropdownstile a dropdown per consentire l'editing) ti ritorna comunque una stringa, ritornando SelectedValue il datasurce accetta anche valori null (mentre non nel mio caso quando mi viene generato l'errore)

  10. #10
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    Originariamente inviato da DeBe99
    Il selectedValue potrebbe essere null, ed è proprio questo il caso che devo gestire, nel caso, reimposto sia il value della combo che della colonna del datagrid e poi restituisco false il metodo validate non ha errori, in quanto per ora non fà nient'altro che annullare l'operazione.
    Quendo viene generata l'eccezione il cursore si ferma sulla dichiarazione di form (una volta eseguito sia il commit che l'abort (viene eseguito quando ritorni false dal commit)
    io non parlo della proprietà selectedValue ma dell'oggetto che usi e che la espone

    Se si ferma sulla dichiarazione del form allora bisogna vedere quale oggetto genera l'errore. Questi sono problemi legati alla nuova gestione degli errori. Se si genera un errore viene rimandato indietro finchè non trova il primo gestore che lo intercetta. Nel caso di utilizzo di incapsulamento o ereditarietà possono nascere problemi di questo tipo. Magari l'errore lo genera la classe dalla quale stai ereditando e non una routine da te inserita nella classe figlio

    non so se mi sono spiegato, è un pò un casino

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.