Avatar billede nat Nybegynder
02. august 2007 - 14:29 Der er 16 kommentarer og
1 løsning

c#.net indsæt række i binded dropdownlist

Hej Eksperter,

Jeg har en dropdownlist der henter data fra en database.

Jeg vil imidlertid gerne indsætte en række øverst i dropdownlisten hvor der står "vælg" og som har værdien 0,

Hvordan kan jeg gøre det i code behind? Når jeg har følgende:

...
...
DataSet ds = new DataSet();
oda.Fill(ds);   
DDL_navn.DataTextField = "Navn";
DDL_navn.DataValueField = "Navn";
DDL_navn.DataSource = ds;
DDL_navn.DataBind();
Avatar billede kalp Novice
02. august 2007 - 14:40 #1
før alt andet bliver kaldt tilføjer du den dropdown listen

dropDownList.Items.Add("None");
dropDownList.SelectedIndex = 0;
Avatar billede nat Nybegynder
02. august 2007 - 15:09 #2
"Vælg" kommer ikke noget i dropdownlisten, har prøvet at sætte det ind her:

OdbcConnection conn = new OdbcConnection(connstr);
           
string sql = "select distinct navn from table1";

OdbcDataAdapter oda = new OdbcDataAdapter(sql, conn);
                       
DataSet ds = new DataSet();
oda.Fill(ds);   
               
DDL_navn.Items.Add("Vælg person");
DDL_navn.SelectedIndex = 0;
DDL_navn.DataTextField = "Navn";
DDL_navn.DataValueField = "Navn";
DDL_navn.DataSource = ds;
DDL_navn.DataBind();

Skal det sættes ind endnu tidligere?
Avatar billede kalp Novice
02. august 2007 - 15:20 #3
jeg tror det er fordi du overskriver den med din .DataSource = ds;

:)

så du kan evt. tilføje den i din DB og sørge for at når du trækker resultater ud med din SQL at den kommer først!
Avatar billede nat Nybegynder
02. august 2007 - 15:32 #4
Jeg kan ikke tilføje i db'en (har ikke skrive adgang) derfor ville jeg tilføje den i koden.

Kan man tilføje en række til dataset'et så efter den er blevet genereret?
Avatar billede kalp Novice
02. august 2007 - 15:50 #5
kan du vel godt..
du skal oprette DataColumn, DataRow og kalde metoden
DDL_navn.Tables[0].Rows.Add(DIN ROW);

sådan ca. da... har ikke noget udviklingsværktøj fremme til at præcisere det
Avatar billede nat Nybegynder
02. august 2007 - 16:00 #6
det forstår jeg ikke lige. Har oprettet et dataset, kan man ikke tilføje til det i stedet for dropdownlisten?
Avatar billede kalp Novice
02. august 2007 - 16:08 #7
sorry.. "EN OMMER"

kan du vel godt..
du skal oprette DataColumn, DataRow og kalde metoden
ds.Tables[0].Rows.Add(DIN ROW);

sådan ca. da... har ikke noget udviklingsværktøj fremme til at præcisere det
Avatar billede nat Nybegynder
02. august 2007 - 16:21 #8
ahh sorry, er ikke lige med på hvordan jeg skal oprette en DataColumn og Datarow og derefter bruge dem i  ds.Tables[0].Rows.Add(DIN ROW);
Avatar billede kalp Novice
02. august 2007 - 16:41 #9
kan som sagt ikke teste:)

OdbcConnection conn = new OdbcConnection(connstr);
           
string sql = "select distinct navn from table1";

OdbcDataAdapter oda = new OdbcDataAdapter(sql, conn);
                       
DataSet ds = new DataSet();
oda.Fill(ds);   
               

DataRow row  = new DataRow();
            row.ItemArray.SetValue("None",0);
            row.ItemArray.SetValue("0",1);
            da.Tables[0].Rows[0].SetParentRow(row);


DDL_navn.SelectedIndex = 0;
DDL_navn.DataTextField = "Navn";
DDL_navn.DataValueField = "Navn";
DDL_navn.DataSource = ds;
DDL_navn.DataBind();
Avatar billede nat Nybegynder
02. august 2007 - 16:58 #10
okay på den måde :)

Jeg får en fejl på DataRow row = new DataRow(); :

No overload for method 'DataRow' takes '0' arguments
Avatar billede kalp Novice
02. august 2007 - 17:28 #11
jeg må se på det lidt senere hvor jeg kan se mulighederne:)
Avatar billede nat Nybegynder
02. august 2007 - 17:52 #12
ok, jeg ser frem til dit svar, har prøvet lidt andre forskellige muligheder også, hvor jeg oprettede en Datatabel istedet for et dataset, men der kom ikke nogen ekstra række i dropdownlisten
Avatar billede kalp Novice
02. august 2007 - 18:27 #13
DataSet ds = new DataSet();
oda.Fill(ds);   
               
  DataRow row = ds.Tables[0].NewRow();
            row.ItemArray.SetValue("None", 0);
            row.ItemArray.SetValue("0", 1);
            ds.Tables[0].Rows.InsertAt(row, 0);

DDL_navn.SelectedIndex = 0;
DDL_navn.DataTextField = "Navn";
DDL_navn.DataValueField = "Navn";
DDL_navn.DataSource = ds;
DDL_navn.DataBind();


det er ikke testet...
det eneste som kan være "forkert" er selve rækken.. om den har fået kolonnerne korrekt:)
Avatar billede neoman Novice
03. august 2007 - 16:37 #14
DDL_navn.Items.Clear();
        DDL_navn.Items.Add(New ListItem("Vælg", "0"));
        DDL_navn.AppendDataBoundItems = true;
Avatar billede neoman Novice
03. august 2007 - 16:37 #15
og dette skal være inden du databinder
Avatar billede nat Nybegynder
01. oktober 2008 - 08:17 #16
Neoman og kalp kan I ikke smide et svar, så får i begge point (undskyld den sene tilbage melding, men har været på barsel og ikke kigget herinde)
Avatar billede kalp Novice
05. oktober 2008 - 19:22 #17
:)
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
Kurser inden for grundlæggende programmering

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