[VB.NET] Array als source voor datagrid

Pagina: 1
Acties:

  • kaandorp
  • Registratie: November 1999
  • Laatst online: 20-05 23:14
Ik maak een structure aan en stop deze in een array:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Structure Orderline
    Dim Amount As Integer
    Dim Description As String
    Dim Price As Integer
End Structure

Dim OrdLines(2) As Orderline

OrdLines(0).Amount = 1
OrdLines(0).Description = "Western Digital Raptor 74,0Gb, 10Krpm, 8Mb, SATA"
OrdLines(0).Price = 259

OrdLines(1).Amount = 1
OrdLines(1).Description = "Asus A7V333,SocketA,KT333,3xDDR, Audio,USB2.0"
OrdLines(1).Price = 189

OrdLines(2).Amount = 1
OrdLines(2).Description = "NEC ND-1100 DVD/CD Recorder DVD+R(W), bulk"
OrdLines(2).Price = 180

Ik wil nu graag in een datagrid de array weergeven.
Datagrid1.Datasource = OrdLines is niet voldoende.
Is dit uberhaupt mogelijk?

Verwijderd

In win of webforms? In het geval van webforms moet je nog de Datagrid1.DataBind Methode aanroepen.
Krijg je nu een foutmelding? zo ja welke?

  • kaandorp
  • Registratie: November 1999
  • Laatst online: 20-05 23:14
Ik krijg geen foutmelding, maar 3 lege rijen:
Afbeeldingslocatie: http://www.dynatools.nl/files/datagrid.jpg

  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
Het is heel gek hoor;
Blijkbaar worden enkel de public properties van je achterliggende datasource getoond in je datagrid.
Als je dus in je OrderLine structure nog properties definieert voor Amount, Description en Price (waarom is price trouwens een int ? zou dit niet beter een decimal zijn?), dan zal je die gegevens wel te zien krijgen.

https://fgheysels.github.io/


  • tijn
  • Registratie: Februari 2000
  • Laatst online: 25-05 12:24
Klopt. Je kunt met niet al te veel moeite alleen public properties binden. Alleen door specifieke interfaces te implementeren kun je verder gaan, maar dit is behoorlijk lastig, vooral ook omdat het bijzonder summier gedocumenteerd is (en dat is slechts een understatement).

Cuyahoga .NET website framework


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:50

gorgi_19

Kruimeltjes zijn weer op :9

tijn schreef op 18 april 2004 @ 23:09:
Klopt. Je kunt met niet al te veel moeite alleen public properties binden. Alleen door specifieke interfaces te implementeren kun je verder gaan, maar dit is behoorlijk lastig, vooral ook omdat het bijzonder summier gedocumenteerd is (en dat is slechts een understatement).
offtopic:
Puur uit interesse, in welke hoek moet ik die interfaces zoeken? Oftewel: kan je vertellen welke dat zijn?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • tijn
  • Registratie: Februari 2000
  • Laatst online: 25-05 12:24
gorgi_19 schreef op 18 april 2004 @ 23:11:
[...]

offtopic:
Puur uit interesse, in welke hoek moet ik die interfaces zoeken? Oftewel: kan je vertellen welke dat zijn?
ITypedList voor lijstjes en ICustomTypeDescriptor voor enkele objecten. ITypedList heeft bijvoorbeeld een GetItemProperties methode waarmee je een soort van 'virtuele properties' kunt definieren die als PropertyDescriptorCollection teruggegeven worden. Dit kunnen gewone PropertyDescriptors zijn, maar ook afgeleide varianten waarin je bijvoorbeeld binding met public fields ipv properties kunt regelen.

Cuyahoga .NET website framework


  • EfBe
  • Registratie: Januari 2000
  • Niet online
Properties definieren in je struct, complex binding controls binden met property descriptors. Leer ook aan om accessor operators te plaatsen voor je field declarations, dus Public of Private (of Friend of wat heeft VB.NET nog meer?). Nu is het maar afwachten of de lezer weet wat de default is voor de betreffende taal (ik meen public, maar dat weet ik niet zeker, voor C# is het private, dus dat zou het verklaren)

ICustomTypeDescriptor heb je niet nodig, ITypedList zou kunnen, maar is op zich ook niet nodig, omdat hij dan een derived class van Array moet maken terwijl het met struct properties ook zou moeten. ITypedList is niet zo fijn om te implementeren omdat er nauwelijks documentatie over is.

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
Het zal idd public zijn, aangezien de TS blijkbaar direct aan die fields kon. Het verbaast me enigszins wel, aangezien ik ook dacht dat het in C# default private was.

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:50

gorgi_19

Kruimeltjes zijn weer op :9

whoami schreef op 19 april 2004 @ 10:27:
Het zal idd public zijn, aangezien de TS blijkbaar direct aan die fields kon. Het verbaast me enigszins wel, aangezien ik ook dacht dat het in C# default private was.
Visual Basic .NET:
1
2
3
Public Class Foo
    Dim a as Integer
End class

a is hierin Private
Visual Basic .NET:
1
2
3
Public Structure Bar
    Dim a as Integer
End Structure

a is hierin Public

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
Ik zit me hier trouwens af te vragen hoe de volgorde bepaald wordt van de columns als je je class bindt aan een datagrid.

Stel, ik heb deze class:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Test
{
    ....
    public string Naam
    {
         get {} set {}
    }

    public string Adres
    {
         get{} set{}
    }
    ....
}


Je hebt dus een class die een aantal public properties heeft. Als je een arraylist hebt die een aantal van deze objecten bevat, en je bindt die arraylist aan een datagrid, dan krijg je dus de public properties in die datagrid te zien.
Nu vraag ik me dus af hoe er bepaald wordt in welke kolom-volgorde die properties in de grid getoond worden.
Ik dacht dat deze in de volgorde gingen getoond worden waarop de properties in de class gedefinieerd waren; in dit voorbeeld dus: de eerste kolom bevat de naam, de 2de kolom het adres, etc....
Nu blijkt uit wat testjes dat ik daar niet vanuit mag gaan. Weet iemand hoe ik die volgorde kan bepalen ?

https://fgheysels.github.io/


  • tijn
  • Registratie: Februari 2000
  • Laatst online: 25-05 12:24
whoami schreef op 21 april 2004 @ 14:48:
Nu blijkt uit wat testjes dat ik daar niet vanuit mag gaan. Weet iemand hoe ik die volgorde kan bepalen ?
Voor mijn gevoel gaat die volgorde volkomen willekeurig. Eerder de omgekeerde volgorde van de properties dan de juiste volgorde maar dan ook nog niet echt :).
Gelukkig kun je met wat TableStyles geneuzel de volgorde nog wel enigszins oplappen.

Cuyahoga .NET website framework


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
Ik ben er in geslaagd. \o/

Thx to dit topic waarin ik voor de eerste keer die ITypedList zag, en thx to EfBe's artikel over complex databinding ben ik erin geslaagd om zelf die volgorde te kunnen bepalen.

_o_

https://fgheysels.github.io/

Pagina: 1