Avatar billede Simon Praktikant
10. februar 2006 - 09:50 Der er 5 kommentarer og
1 løsning

Typed DataSet fra klasse uden grafisk form

Jeg ønsker at arbejde med Typed DataSet i VS 2005 for at kunne tilgå tabeller som variabler, eks:

String s = dsCustomersOrders1.Customers[0].CustomerID;

i stedet for

string s = (string) dsCustomersOrders1.Tables["Customers"].Rows[0]["CustomerID"];

(http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon/html/vbconDataSets.asp)

Når jeg opretter et typed dataset kan jeg gøre det via den grafiske designer for min Form. Men jeg vil gerne arbejde med Typed DataSets i en classe, som ikke er tilknyttet nogen form.

Hvordan gøres dette?
Avatar billede aaberg Nybegynder
10. februar 2006 - 14:12 #1
Du kan sagtens bruge designeren til at designe et typed dataset, uden at du har en form i dit projekt.

Højreclick på dit project i solution exploren. Tryk "Add" -> "New Item". Vælg dataset og tryk ok. Så laver Visual Studio et typed dataset til dig, som du har mulighed for at redigere i en designer.
Avatar billede Simon Praktikant
10. februar 2006 - 15:32 #2
Ja det har jeg også mulighed for. Og dette kan jeg tilgå alle steder fra på følgende måde:
string s = (string) dsCustomersOrders1.Tables["Customers"].Rows[0]["CustomerID"];

Men jeg vil gerne have mulighed for at kunne tilgå det således:
String s = dsCustomersOrders1.Customers[0].CustomerID;
Og det har jeg pt. kun i klassen for min Form.
Avatar billede aaberg Nybegynder
13. februar 2006 - 10:36 #3
Efter at du har oprettet et dataset i designeren, oprettes der automatisk en typed dataset til dig. Du kan ikke med musen trække dette dataset ind i dit program, da du (som du selv siger) ikke har nogen form. Men du kan sagtens oprette dit typed dataset i din kode.

Hvis du har kaldt dit DataSet for "dsCustomersOrders", skriver du i din kode.

dsCustomerOrders dsCustomerOrders1 = new dsCustomerOrders();

Hvis du vil kunne tilgå datasettet i hele din klasse, skal du tilføje ovenstående sætning helt øverst i din klasse, lige under klassedefinitionen. Herunder har jeg givet et eksempel.

public class MyClass
{
  dsCustomerOrders dsCustomerOrders1 = new dsCustomerOrders();

  public MyClass() //Constructor
  {
  }
}
Avatar billede Simon Praktikant
14. februar 2006 - 09:57 #4
Tak for hjælpen aaberg80.

Efter at have leget lidt med filerne xxx.cs, xxx.xsc, og xxx.xss som hører til xxx.xsd, mener jeg at have set en rød tråd i typed datasets, og hvordan det hænger sammen.

Det typed dataset som repræsenterer xsd-filen er i virkeligheden en klasse som arver fra DataSet. Koden i xxx.cs filerne opretter tabeller og kolonner i forhold til hvilke tabeller og kolonner xsd-filen indeholder.

På denne måde får man et dataset som afspejer en xsd-fil.

Smid et svar, og point er dine ;-)
Avatar billede aaberg Nybegynder
14. februar 2006 - 10:01 #5
Det er lige præcis sådan det er. Der er absolut ingen magi i et typed dataset, det er bare Visual Studio der skriver en klasse for dig.
Avatar billede Syska Mester
14. februar 2006 - 17:33 #6
Som gør mange ting nemmere, da man på den måde undgår mange stavefejl og andre ting :-) Da fejl vil blive fanget compile time :-) og ikke runtime.

// ouT
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester