Vraag : Kan geen gegevensbron Datagridview aan lijstvoorwerp plaatsen

Hello heb ik een subroutine genoemd PopulateBatchLoadDataGridView die ik wil gebruiken om een datagridview te bevolken.  Ik heb de zelfde code in vele delen van mijn toepassing gebruikt maar nu in dit bepaalde geval, wanneer ik de code uitvoer, slechts wordt het laatste verslag geladen in datagrid en het wordt tweemaal geladen.  Zo bijvoorbeeld, is het hier drie verslagen in de bronlijst, verschijnt de laatste verslagen drie keer.  Deze routine roept een functie genoemd GetTechnologyData die schijnt om boete te werken.  Ik ben niet zeker wat het gaan on is
" codeBody "
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
Private SubPopulateBatchLoadDataGridView ()
        Schemerige tl als Nieuwe SortableBindingList (van TechnologySet) (TechnologySetDB.GetTechnologyData)
        Als tl. Telling > 0 toen
            dgvTechnologySets.DataSource = tl
        Anders
            dgvTechnologySets.DataSource = niets
        Eind als
    Sub van het eind

Gedeelde Overheidsfunctie GetTechnologyData () als Lijst (van TechnologySet)
        Schemerige techlist als Nieuwe Lijst (van TechnologySet)
        Schemerige CnSql als SqlConnection = BadsDB.GetConnection
        Schemerige cmdA als SqlCommand
        cmdA = Nieuwe SqlClient.SqlCommand („up_CompareTechnology“, CnSql)
        cmdA.CommandType = CommandType.StoredProcedure
        Probeer
            CnSql.Open ()
            Schemerige lezer als SqlDataReader = cmdA.ExecuteReader (CommandBehavior.CloseConnection)
            Schemerig t als Nieuwe TechnologySet
            Schemerig x als Geheel = 1
            Doe terwijl lezer. Lees
                t.TechnologySetCode = lezer („TechnologySetCode“) .ToString
                t.TechnologySetName = lezer („TechnologySetName“) .ToString
                t.TechnologySetType = lezer („TechnologySetType“) .ToString
                t.Notes = lezer („Nota's“) .ToString
                techlist. Voeg toe (t)
            Lijn
            Techlist van de terugkeer

        Vangst excA als SqlException
            MsgBox (excA.Message)
            Terugkeer niets
        Tot slot
            CnSql.Close ()
        Het eind probeert

Antwoord : Kan geen gegevensbron Datagridview aan lijstvoorwerp plaatsen

U moet uw code veranderen zoals hieronder.

U moet Schemerig t als Nieuwe TechnologySet in Lijn in plaats van buitenkant zetten.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
Gedeelde Overheidsfunctie GetTechnologyData () als Lijst (van TechnologySet)
        Schemerige techlist als Nieuwe Lijst (van TechnologySet)
        Schemerige CnSql als SqlConnection = BadsDB.GetConnection
        Schemerige cmdA als SqlCommand
        cmdA = Nieuwe SqlClient.SqlCommand („up_CompareTechnology“, CnSql)
        cmdA.CommandType = CommandType.StoredProcedure
        Probeer
            CnSql.Open ()
            Schemerige lezer als SqlDataReader = cmdA.ExecuteReader (CommandBehavior.CloseConnection)
            
            Schemerig x als Geheel = 1
            Doe terwijl lezer. Lees
		Verduister t als Nieuwe TechnologySet
                t.TechnologySetCode = lezer („TechnologySetCode“) .ToString
                t.TechnologySetName = lezer („TechnologySetName“) .ToString
                t.TechnologySetType = lezer („TechnologySetType“) .ToString
                t.Notes = lezer („Nota's“) .ToString
                techlist. Voeg toe (t)
            Lijn
            Techlist van de terugkeer

        Vangst excA als SqlException
            MsgBox (excA.Message)
            Terugkeer niets
        Tot slot
            CnSql.Close ()
        Het eind probeert
Andere oplossingen  
 
programming4us programming4us