Avatar billede agertoft Nybegynder
28. marts 2005 - 18:41 Der er 4 kommentarer og
1 løsning

Find object med bestemt id i datatable

Jeg har en oversigtsside over en række nyheder. Til at liste det bruger jeg en DataListe. Den lister kun overskriften og datoen på nyhederne. Når man så klikker sig ind på en af disse nyheder, er det meningen at alle detaljer skal vises. Dertil bruger jeg en ny DataListe. Mit problem består i at hente denne enkelte post i min DataTable. Jeg kan sagtens lave en forespørgelse helt ned i databasen, men det er jo hverken særlig elegant eller effektivt. Så mit spørgsmål går på, hvordan jeg henter hele posten med ID'et fx 8 ind i min DataListe. Jeg har prøvet noget lignende det her:

DataListSingleNews.DataSource = oDataSet.Tables["news"].Select("id = "+id+"");

Men jeg ved for det første ikke om det er noget i den stil jeg skal have fat i, eller om det overhovedet kan gøres på den måde. Hvordan henter jeg én enkelt post ud af min DataTable og får vist den i min DataListe?
Avatar billede agertoft Nybegynder
28. marts 2005 - 18:55 #1
Nu fandt jeg ud af at bruge et DataView:

DataView oDataView = new DataView();
oDataView.Table = oDataSet.Tables["news"];
oDataView.RowFilter = "id = "+id+"";

DataListSingleNews.DataSource = oDataView;
DataListSingleNews.DataBind();

Er det MÅDEN at gøre den slags på? Fordele / ulemper?
Avatar billede burningice Nybegynder
28. marts 2005 - 23:15 #2
Et dataview er en fin måde at gøre det på, og vil som oftest være den man vælger. Og i dit tilfælde hvor det skal bindes til en datasource er det nok også tæt på den eneste måde. Man kan godt udføre en Select på et DataTable-object, men det vil returnere et DataRow-array som ikke umiddelbart kan bruges som datasource.

Så, ja... det er måden at gøre det på. Eneste ulempe er lidt overhead ved oprettelse af et DataView object, but what can i say. Smid nogle flere ram i serveren hvis det bliver et problem ;)
Avatar billede burningice Nybegynder
28. marts 2005 - 23:17 #3
din oprindelige kode mangler forresten kun en lille ting for at være rigtig

DataListSingleNews.DataSource = oDataSet.Tables["news"].Select("id = "+ id +"")[0];

den sidste indexer ([0]) er nødvendig da Select() returnerer et DataRow[]-object (et array). Og da din select-query gerne kun skulle returnere en enkelt row kan vi være sikre på at den ønskede post findes på index 0 i array'et.
Avatar billede agertoft Nybegynder
28. marts 2005 - 23:22 #4
Det lyder godt. Det var det, jeg ville høre, for det virker også præcis som det skal ;-)

Smid et svar...
Avatar billede burningice Nybegynder
28. marts 2005 - 23:44 #5
svar :)
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