Newsgroup: it.comp.lang.visual-basic
Titolo: [.net] Collection come fonti dati di Datagrid

Ho qualche problema ad utilizzare una collection come fonte dati di una
Datagrid.
Situazione:
Una collection costruita ereditando da CollectionBase
Un Datagrid
Problemi:
1) se associo la collection al datagrid con collection vuota, alla prima
introduzione di un oggetto nella collection va in palla, nel senso che se
una cella del datagrid prende il focus, la successiva perdita del focus
causa un errore per "indice non compreso nell'intervallo" (più o meno)
2) se elimino un oggetto dalla collection, (non vuota, of course) il sistema
mi va in palla perchè dice che non ci sono dati corrispondenti (sempre
indicazione di errore generica).
ho risolto il problema associando la collection al controllo solo se "non
vuota" e disassociando (e poi riassociando) la collection prima di fare una
eliminazione, ma mi piace assai poco.
Qualcuno ha mai provato a associare collection ai datagrid?
E' andato tutto bene o avete incontrato problemi?
Salutoni e ringraziamenti anticipati (sulla fiducia, và)
Sergio

 una Datagrid.
Non e' proprio lo stesso problema ma c'e' un problema noto
simile se dopo l'inserimento di un dato passi alla "pagina"
successiva:
http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B813832
In alternativa qualche link sparso correlato:
http://www.dotnet247.com/247reference/msgs/29/148813.aspx
http://www.dotnet247.com/247reference/msgs/27/137731.aspx
Credo pero' che quello decisivo che potrebbe risolvere sia:
http://www.devcity.net/forums/topic.asp?tid=6324&page=2
Ovvero, subito dopo Delete o Add della collection un bel:
Me.MyGrid.CurrentRowIndex = 0
hth,
Lokar
-- 
Sito Comune: 
http://www.it-lang-vb.net/
Manifesto: 
http://www.it-lang-vb.net/docs/Manifesto.txt
UGIdotNET - 
http://www.ugidotnet.org

 
http://www.devcity.net/forums/topic.asp?tid=6324&page=2
Sě, il problema č quello segnalato dal "postatore" [RendleRT07] anche se io,
per collegare la collection al datagrid mi sono limitato a fare
dg.DataSource = MyCollection
Questa sera provo e faccio sapere...
Molte grazie
Salutoni
Sergio

Arriva il "des". Incollare in un form con una DataGrid1 e un Button1
Collection in DataGrid da Tommaso
=====================================================================
Imports System
Imports System.Collections
Public Class Form1
    Inherits System.Windows.Forms.Form
'Windows Form Designer generated code 
 Public Class CollezionediOggettiMostratiInDatagrid
        Inherits CollectionBase
        Default Public Property Item(ByVal Index As Integer) As
OggettoMostratoInDatagrid
            Get
                Return CType(List.Item(Index),
OggettoMostratoInDatagrid)
            End Get
            Set(ByVal Value As OggettoMostratoInDatagrid)
                List.Item(Index) = Value
            End Set
        End Property
        Public Function Add(ByVal Item As OggettoMostratoInDatagrid) As
Integer
            Return List.Add(Item)
        End Function
    End Class
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
        Dim CollezionediOggettiMostratiInDatagrid As
CollezionediOggettiMostratiInDatagrid _
        = New CollezionediOggettiMostratiInDatagrid()
        With CollezionediOggettiMostratiInDatagrid
            .Add(New OggettoMostratoInDatagrid("Nome1", "Cognome1",
"Eta1"))
            .Add(New OggettoMostratoInDatagrid("Nome2", "Cognome2",
"Eta2"))
        End With
        DataGrid1.DataSource = CollezionediOggettiMostratiInDatagrid
    End Sub
End Class
Public Class OggettoMostratoInDatagrid
    Sub New(ByVal ProprietaTommaso1, ByVal ProprietaTommaso2, ByVal
ProprietaTommaso3)
        _ProprietaTommaso1 = ProprietaTommaso1
        _ProprietaTommaso2 = ProprietaTommaso2
        _ProprietaTommaso3 = ProprietaTommaso3
    End Sub
    Private _ProprietaTommaso1 As String
    Public Property ProprietaTommaso1() As String
        Get
            Return _ProprietaTommaso1
        End Get
        Set(ByVal Value As String)
            _ProprietaTommaso1 = Value
        End Set
    End Property
    Private _ProprietaTommaso2 As String
    Public Property ProprietaTommaso2() As String
        Get
            Return _ProprietaTommaso2
        End Get
        Set(ByVal Value As String)
            _ProprietaTommaso2 = Value
        End Set
    End Property
    Private _ProprietaTommaso3 As String
    Public Property ProprietaTommaso3() As String
        Get
            Return _ProprietaTommaso3
        End Get
        Set(ByVal Value As String)
            _ProprietaTommaso3 = Value
        End Set
    End Property
End Class
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Arriva il "des"
(snip)
Ti ringrazio sinceramente per il codice, e vedrò di ricambiare, ma non era
di questo che avevo bisogno.
Sono già riuscito a costruire una collection personalizzata, anzi, oltre
alle funzioni che hai inserito nella tua, ho implementato un metodo per
ordinarla. Il mio problema, ma da alcuni link postati da Lokar pare non sia
soltanto mio, è che poi associando la collection al datagrid ci sono alcuni
problemi in fase di aggiunta ed eliminazione di oggetti dalla collection.
Il do ut des era riferito al codice del "tuo" programma... Se vuoi che ti
testi un programma, condividi anche il sorgente....
oh, a scanso di equivoci, chiarisco: mi rendo conto che una proposta del
genere può far inorridire, o suscitare sorrisetti ironici; però insisto: se
devo fare qualcosa per qualcuno, vorrei ricavarne anche io qualcosa, in
questo caso la possibilità di vedere come ha (o non ha ;-) ) superato certi
scogli. A margine prometto di non utilizzare il codice in nessun modo, se
non come fonte di ispirazione, ma qui, ovviamente, si va sulla fiducia...
Salutoni
Sergio

 Me.MyGrid.CurrentRowIndex = 0
Cattive notizie.
Questa non funge. Oggi proseguo sugli altri link
Salutoni
Sergio

 wrote in message
news:ba23gv$oc04g$
1...@ID-173193.news.dfncis.de



 ed eliminazione di oggetti dalla collection.
Eccolo qui:
http://www.dotnet247.com/247reference/msgs/29/149613.aspx
L'unico workaround sembra essere, subito dopo Add/Delete,
slegare il dbGrid dall'oggetto della classe ereditata dalla
collection e rilegarla...
http://www.csharpfriends.com/Members/Main/Tutorials/get_tutorial.aspx?tutID=81


 [SNIP]
In ogni caso ricordati di un'altro BUG noto dei DataGrid
Se il CurrentRowIndex vale TOT, svuoto e riempio il DataGrid
con _meno_ elementi di TOT, viene sollevata una simpatica
eccezione.
Soluzione: _prima_ di svuotare e ri-riempire il DataGrid
impostare la proprieta' .CurrentRowIndex = 0.
Happy Coding =)


 eccezione.
uhm, nel mio caso ciò dovrebbe accadere se cancello l'ultimo elemento....
Eccezionalmente oggi posso fare una prova, anche se sulla versione di
release, quindi posso verificare.
see you later
Salutoni
Sergio

 de/serializzazione).
Sģ.
E' praticamente identica a quella che ho fatto io (a parte i nomi delle
proprietą ;-) )
Per il tuo programma, va bene se ci sentiamo in mail?
(per il newsgroup: gli eventuali frutti del lavoro di collaborazione
verranno comunque resi di pubblico dominio)
Salutoni
Sergio

 eccezione.
Ho appena provato e........(rullo di tamburi)
Confermo il bug!
Che bello, ne ho trovato anche un'altro (questa volta cretinissimo ed
esclusivamente mio):
Se apro un file, senza specificare che lo voglio solo leggere, se il file è
read only mi viene negato l'accesso. Si vede che non lavoro spesso con i
file, specie con quelli su cd? :-D
Salutoni
Sergio

 Sergio
dim Saluto as new Saluto()
Saluto.WaveHand()
Saluto.Dispose()
