Avatar billede cdull Nybegynder
24. august 2005 - 10:26 Der er 14 kommentarer og
1 løsning

Datagrid.datasource efter itemdatabound

Har et datagrid hvor der startes med at tilføjes en datasource fra en database. Derpå under itemdatabound eventen bliver der tilføjet to nye kolonner med data til datagriddet.

Hvordan får jeg nu fat i ALLE data fra datagriddets source?
Prøver at få fat på dem med datagrid.datasource men der får jeg kun de fire (af ialt 6 kolonner) data mens de sidste to ikke indeholder noget.

Håber at det er til at forstå.
På Forhånd Tak.
Avatar billede snepnet Nybegynder
24. august 2005 - 10:30 #1
du kan hente det på e.Item.DataItem, der som udgangspunkt skal castes til et DataRowView - altså :

DataRowView drv = e.Item.DataItem as DataRowView;

og så kan du kigge i det som du vil :

if(drv != null)
{
  string someText = drv["someColumn"].ToString();
}

mvh
Avatar billede cdull Nybegynder
24. august 2005 - 10:38 #2
Er det muligt at jeg får fat på alle data og så smide dem alle direkte ind i datagrid.datasource?
Avatar billede snepnet Nybegynder
24. august 2005 - 10:42 #3
når itemdatabound kaldes, så er det fordi du er ved at databinde, og har noget data at binde til. det betyder så igen, at dit grid allerede har en datasource, som på en eller anden måde er tilgængelig, da du jo har påtrykt den på griddet.... såh... jeg forstår ikke helt hvad du spørger om.
mv
Avatar billede cdull Nybegynder
24. august 2005 - 10:51 #4
Har selv lidt problemer med det :)

Som jeg kan forstå ud fra den kode jeg arbejde med er at der bliver smidt data ind i datagriddet svarende til 4 kolonner fra databasen. Der er i alt seks i datagriddet.
Under itembound bliver der igen tilgået til databasen og der bliver så smidt data ind i de to sidste kolonner ved at tilføje dem til e.Item.Cells(4).Text = et eller andet.

Er der nogen måde at jeg kan få samtlige data når jeg ser et færdigt grid. Ser en masse tekst i de forskellige kolonner, hvordan får jeg alt det?
Avatar billede snepnet Nybegynder
24. august 2005 - 10:57 #5
det smarteste ville være hvis du sørgede for at definere dit datagrundlag, så det indeholdt tilstrækkeligt data fra starten.
altså simpelthen lave en datatabel med de kolonner du har behov for, og så fylde den med data, men du kan løbe griddet igennem hvis du vil :

foreach(DataGridItem item i someDataGrid)
{
  if(item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
  {
    string col1Text = item.Cell[0].Text;
  }
}

mvh
Avatar billede cdull Nybegynder
24. august 2005 - 11:05 #6
Okay det lyder helt fint.
Hvordan får jeg så det jeg får derfra smidt i et nyt datagrid.

Med den samme opstilling, navne på kolonner og det hele.
Lad os sige jeg henter item.Cell(0).Text
hvordan går jeg det selvsamme smidt over i item.Cell(0) bare i et nyt datagrid med et andet navn?
Avatar billede snepnet Nybegynder
24. august 2005 - 11:25 #7
øhh.... ?!?!
du har noget kode der genererer dig et datagrid på en form, med det indhold der skal være... hvis du vil bruge opsætning af grid mv på flere forms - så læg det i en user control, som vi skrev om tidligere - så kan du bruge den på alle de forms du vil.
mvh
Avatar billede cdull Nybegynder
24. august 2005 - 11:28 #8
Det er ikke opsætning, skal bare udfra det data der ligger i det ene datagrid lave et andet datagrid med samme informationer i.
Det er ligemeget med udseendet af det bare de rigtige data er i, med de rigtige kolonner.
Avatar billede snepnet Nybegynder
24. august 2005 - 11:34 #9
hvis du har kode til at lave et grid - hvad er det så der er problemet i at lave 2 ?
du kan jo bare kopiere det du har ind på en anden form - så er det fikset, og hvis du vil undgå at have kopieret kode, så læg det i en usercontrol.
mvh
Avatar billede cdull Nybegynder
24. august 2005 - 11:45 #10
Ville gerne se om man kunne gøre det på den anden måde.
Så der bare skal skrives lidt kode for at hente selve data. Som fx. Datasource gør.
Den henter dog kun de data som der blev hentet helt fra starten af og ikke nogle andre, mangler de to sidste kollonners data.

jeg kunne sagtens bare kopiere det andet, men vil også gerne lære lidt om selve ASP.NET så gider ikke bare kopiere.
Men som jeg kan se er det andet kode også meget rodet, og burde slet ikke være lavet sådan fra starten. har dog desværre ikke muligheden for at lave det om, ellers havde jeg gjort det.
Avatar billede snepnet Nybegynder
24. august 2005 - 11:53 #11
er du med på hvad en usercontrol er?
Avatar billede cdull Nybegynder
24. august 2005 - 11:56 #12
Har endnu ikke prøvet det. Men sådan som jeg forstår det er at man opretter controls som man kan genbruge igen, det kan være modificerede controls eller bare egne controls.
Er jeg helt gal på den?
Avatar billede snepnet Nybegynder
24. august 2005 - 12:04 #13
nej - det er du ikke.
hvis du bruger visual studio kan du bare tilføje et nyt projektitem af typen usercontrol, så få du en template til det.

så flytter du bare aspx'en og den code-behind der bruges i forbindelse med griddet og i den, og trækker den ind på de sider hvor du har lyst til at bruge den.

at arbejde med en user control i VS, er nøjagtig det samme som at arbejde med en form.
du har en ascx-fil (istedet for aspx), og du har en codebehind-fil.

mvh
Avatar billede cdull Nybegynder
25. august 2005 - 09:48 #14
Okay perfekt. Kigger på det.
Smider du lige et svar.
Avatar billede snepnet Nybegynder
25. august 2005 - 14:16 #15
jeps
mvh
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