Avatar billede misbruger Nybegynder
03. december 2002 - 20:05 Der er 14 kommentarer og
1 løsning

Hent værdier i mit DataSet

Jeg har et DataSet med en DataTable ["Table"] på min CodeBehind side.

"Table" har nedenstående struktur....

Field  |  Text
----------------
fName1  |  text1
fName2  |  text2
fName3  |  text3
fName4  |  text4


Hvor "fName1, fName2...." er navne på Label's på min side.

Jeg vil gerne udskrive "text1" i det label der hedder "fName1" og "text2 i det label der hedder "fName2" osv.....

Men det har jeg godt nok nogle problemer med, er der ikke en der har et godt råd?

(Har prøvet at benytte HashTable og ArrayList, men det kunne jeg ikke helt få til at spille)
Avatar billede burningice Nybegynder
03. december 2002 - 21:04 #1
når du skriver at du vil udskrive det i en label.. vil det så sige at du vil udskrive alle forekomster af text1 fra dit DataSet i samme label??

må jeg spørge hvorfor du ikke bruger enten datagrid eller datalist?
Avatar billede misbruger Nybegynder
03. december 2002 - 21:24 #2
Jeg er ved at lave en webapplication hvori man kan skifte sprog, derfor er det ikke et spørgsmål om at udskrive mine værdier i et grid, men derimod i de rigtige felter.

I mit DataTable har jeg kun en "Field" der f.eks. hedder "lblHeader" som har en "Text" der hedder "Forside" (på dansk) eller "Front page" (på eng.)

Mit DataSet er skabt på baggrund af hvilken side man er på, samt hvilket sprog man har valgt.

Pt. gør jeg sådan her....

foreach(DataRow dRow in dTable.Rows)
{
  if(dRow["Field"].ToString() = "lblHeader")
  {
    lblHeader.Text = dRow["Text"].ToString();
  }
  if(dRow["Field"].ToString() = "lblSection1")
  {
    lblSection1.Text = dRow["Text"].ToString();
  }
}

Og det virker skam også, men der må for fanden være en kønnere måde at gøre det på??????

(NB: Ved du forresten om man kan skrive til XXX: "<asp:BoundColumn HeaderText=XXX DataField=FieldName"></asp:BoundColumn> i et DataGrid fra min CodeBehind side???)
Avatar billede burningice Nybegynder
03. december 2002 - 21:41 #3
det skulle man kunne, hvis du har givet det et id.. så kan du nemlig bruge funktionen FindControl()

ang. om der findes en finere måde at gøre det på, end du har gjort ved jeg virkelig ikke, da det nok ikke er sådan jeg ville have lavet en flersproget website
Avatar billede misbruger Nybegynder
03. december 2002 - 21:45 #4
Jeg er lutter øre....hvordan ville du så have valgt at gøre?
Avatar billede burningice Nybegynder
03. december 2002 - 22:39 #5
have en tbl til dansk, en til engelsk osv. og så bruge querystrings til at hente fra den tabel der svarer til det sprog siden skal vises i.
Avatar billede misbruger Nybegynder
04. december 2002 - 10:36 #6
Tjo...
Hvad skulle den store forskel være ved det?
Om jeg har 5 tabeller DK, UK, SE, NO og GE eller 1 tabel der har et language felt?
5 tabller på 1000 poster eller en tabel på 5000 poster... Kan ikke give nogen  forskel der kan mærkes!
Avatar billede burningice Nybegynder
04. december 2002 - 11:50 #7
sorry.. misforstod vist den måde du havde gjort det på... jo, du har ret... det skulle ikke gøre den store forskel.

ang. en nem måde at fylde det ud på... tja... tjoo...
du kan ikke gøre sådan her:

(label)dRow["Field"].Text = dRow["Text"].ToString();

?
Avatar billede misbruger Nybegynder
04. december 2002 - 12:59 #8
Nej desværre ikke!

Compiler error:
"The type or namespace 'label' could not be found"
Avatar billede burningice Nybegynder
04. december 2002 - 13:07 #9
System.Web.UI.WebControls.Label then... du må gerne rette i den kode jer skriver ;)
Avatar billede misbruger Nybegynder
04. december 2002 - 13:27 #10
Jeg har skam også prøvet at skubbe, rette, pudse, ændre, skifte og bøje den kode du smed, men jeg kan stadig ikke fange de forskellige "BoundColumn"'s
Avatar billede burningice Nybegynder
04. december 2002 - 15:22 #11
uhm.. .prøv så det her

(Label)Page.FindControl(dRow["Field"]).Text = dRow["Text"].ToString();

ideen er i hvert fald, at du burde kunne finde den control på siden der har samme id, som værdien fra field-feltet i din datatable og sætte dens textværdi til værdien af Text-feltet.
Avatar billede misbruger Nybegynder
04. december 2002 - 15:51 #12
Jeg tror jeg har fundet løsningen!

/*
Løsning:
*/
DataTable dTable = Texts.Tables["PageTexts"];
Hashtable hTable = new Hashtable(2);

foreach(DataRow dRow in dTable.Rows)
{
    hTable.Add(    dRow[0].ToString().Trim(),
            dRow[1].ToString().Trim());
}
lblName.Text = hTable["lblStationNumber"].ToString();
lblAddress1.Text = hTable["lblAddress"].ToString();
Avatar billede burningice Nybegynder
04. december 2002 - 16:09 #13
men, det er da stadigvæk ikke særlig dynamisk ?? hvis du nu har 234 labels skal du skrive lblAddress1.Text = hTable["lblAddress"].ToString(); 234 gange?!
Avatar billede misbruger Nybegynder
04. december 2002 - 17:02 #14
Ja det vile selvfølgelig være lækkert såfremt jeg kunne ligge det ind i mit loop, men problemet i det er at det både kan være "Label", "BoundColumn.HeaderText" og andre elementer der skal skrives til....!
Avatar billede burningice Nybegynder
04. december 2002 - 20:18 #15
ah, ja.. så kan jeg godt se problemet
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