Avatar billede simsen Mester
22. maj 2007 - 13:51 Der er 16 kommentarer og
1 løsning

Valg af selefted item i dropdownlist

Hejsa,

Jeg har en dropdownlist, hvor jeg henter valget udfra databasen.

Nu har jeg så fundet ud af, jeg ikke bare kan lave en ddlkategori.selecteditem = kategoriid (den viser ikke det rigtige, når jeg har tilføjet felter efterfølgende til databasen).

Jeg har så herinde fundet en løsning, hvor jeg tester på teksten istedet......men den er selvfølgelig i VB. Jeg har så forsøgt at oversætte med http://www.developerfusion.co.uk/utilities/convertvbtocsharp.aspx

Men det går rent galt. Den siger at jeg bruger noget som metode, som er en property

Nogen der kan oversætte for mig så den fungerer?

Min kode:

string kategorinavn = "";
                    KategoriApi kategoriapi = new KategoriApi();
                    DataTable kategori = null;
                    if (kategoriapi.GetCategory(kategoriid, ref kategori) == Status.Success)
                    {
                        kategorinavn = Convert.ToString(kategori.Rows[0]["KategoriNavn"]);
                    }
                   
                    for (int i = 0; i = ddlKategori.Items.Count - 1; i++)
                    {
                        if (ddlKategori.Items(i).Text == kategorinavn)
                        {}
                        //ddlKategori.SelectedIndex =
                    }

Altså det er selve for løkken jeg har problemer med.

mvh
simsen :-)
Avatar billede mrbonus Novice
22. maj 2007 - 14:09 #1
for lige at gribe problemet ved roden, så vil jeg mene at du skal tilføje dem på denne måde

dim listItem as ListItem
for i as integer = 0 to dineItems.Length
  ListItem = new ListItem(dineItems(i).text, dineItems(i).value)
  DropDownList1.items.add(listItem)
next i

når du opretter listItem, skal du have teksten i den første parameter, og value(id) i den anden, for så kan du istedet for at teste på

ddlkategori.selecteditem = kategoriid

så kan du teste på

ddlkategori.selectedValue = kategoriid
Avatar billede simsen Mester
22. maj 2007 - 14:11 #2
mrbonus

Jeg har nok formuleret mig forkert......det må IKKE være VB - jeg går fuldstændig i panik hver gang jeg ser VB *griner*
Avatar billede simsen Mester
22. maj 2007 - 14:12 #3
Det jeg har forsøgt - er at oversætte

http://www.eksperten.dk/spm/259669

til C#.....og det der så ikke lykkes mig ret godt
Avatar billede mrbonus Novice
22. maj 2007 - 14:13 #4
hvad skal det så være i ? c.Sharp
Avatar billede simsen Mester
22. maj 2007 - 14:15 #5
Og jeg lister dem på følgende måde i dropdownlisten:

//Lister Kategorier i dropdownliste
            try
            {
                //Kategori dropdownliste
                KategoriApi kategoriapi = new KategoriApi();

                DataTable kategorier = null;
                if (kategoriapi.GetCategories(ref kategorier) == Status.Success)
                {
                    ddlKategori.DataSource = kategorier.DefaultView;
                    ddlKategori.DataBind();
                    ddlKategori.Items.Insert(0, "Vælg kategori");
                }
                kategoriapi.Dispose();
            }
            catch
            { }
Avatar billede simsen Mester
22. maj 2007 - 14:16 #6
Det skal være i C# ja - det eneste jeg har lært indtil nu :-)
Avatar billede mrbonus Novice
22. maj 2007 - 14:16 #7
oversætter lige så

ListItem listItem;
for (int i = 0; i = ddlKategori.Items.Count - 1; i++)
{
  listItem = new ListItem(dineItems(i).text, dineItems(i).value);
  ddlkategori.items.add(listItem);
}

når du opretter listItem, skal du have teksten i den første parameter, og value(id) i den anden, for så kan du istedet for at teste på

ddlkategori.SelectedItem = kategoriid

så kan du teste på

ddlkategori.SelectedValue = kategoriid;
Avatar billede simsen Mester
22. maj 2007 - 14:24 #8
hmmmmmm

Jeg forstår ikke det du skriver....

Jeg har ikke brug for at fylde noget i dropdown listen - det gør jeg med http://www.eksperten.dk/spm/779592#rid6750901

Det jeg har brug for, er at vise den korrekte selected value i dropdownlisten.

Og jeg kan ikke tildele SelectedValue noget - det er en readonly property.

Det jeg vil er så istedet at gå igennem dropdownlisten og finde lige nøjagtig (via navn) det kategorinavn og gøre den selected.

Er det det du gør med din?
Avatar billede mrbonus Novice
22. maj 2007 - 14:31 #9
SelectedValue på en dropdownlist er ikke readonly, den har jeg tit skrevet til, har også lige gentestet
Avatar billede mrbonus Novice
22. maj 2007 - 14:34 #10
>Det jeg har brug for, er at vise den korrekte selected value i dropdownlisten.


for (int i = 0; i = ddlKategori.Items.Count - 1; i++)
{
  if (ddlkategori.items(i).Text == "item1")
  {
    ddlkategori.items(i).Selected = true;
  }
}
Avatar billede mrbonus Novice
22. maj 2007 - 14:36 #11
du kan også bruge
if (ddlkategori.items(i).Value == "etEllerAndet")

Men det kommer an på hvad der ligger i din text, og hvad der ligger i din value
Avatar billede simsen Mester
22. maj 2007 - 14:50 #12
<asp:DropDownList ID="ddlKategori" DataValueField="KategoriId" DataTextField="KategoriNavn" runat="server">
                    </asp:DropDownList>

Altså i Value feltet er det id og i tekst feltet teksten.

Når jeg forsøger mig med følgende får jeg 3 fejl;
Error    2    Cannot implicitly convert type 'int' to 'bool'    C:\Inetpub\wwwroot\Opskrifter\Admin\Opskrifter.aspx.cs    206    37    C:\...\Opskrifter\
Error    3    'System.Web.UI.WebControls.ListControl.Items' is a 'property' but is used like a 'method'    C:\Inetpub\wwwroot\Opskrifter\Admin\Opskrifter.aspx.cs    208    41    C:\...\Opskrifter\

Error    4    'System.Web.UI.WebControls.ListControl.Items' is a 'property' but is used like a 'method'    C:\Inetpub\wwwroot\Opskrifter\Admin\Opskrifter.aspx.cs    210    41    C:\...\Opskrifter\

Første fejl er på linien: for (int i = 0; i = ddlKategori.Items.Count - 1; i++)
Anden fejl er på linien: if (ddlKategori.Items(i).Text == "item1")
Tredie fejl er på linien: ddlKategori.Items(i).Selected = true;
Avatar billede simsen Mester
22. maj 2007 - 15:02 #13
Jeg bliver lige nødt til at smutte et par timer - håber du er her, når jeg vender retur - er nemlig desperat - det er sat online før jeg fandt fejlen :-(
Avatar billede mrbonus Novice
22. maj 2007 - 18:55 #14
crap, det var mig der lavede en oversættelsesfejl,

istedet for
ddlkategori.items(i).
skal du skrive
ddlkategori.items[i].

altså firkant paranteser gælder for anden og tredje linie
Avatar billede mrbonus Novice
22. maj 2007 - 18:58 #15
det eneste jeg kan se i denne linie
for (int i = 0; i = ddlKategori.Items.Count - 1; i++)
er at jeg plejer at skrive den således
for (int i = 0; i < ddlKategori.Items.Count; i++)

altså mindre end istedet for lig med, og så slipper man for at skrive " - 1"
Avatar billede simsen Mester
22. maj 2007 - 19:22 #16
Det var netop lige det - mange mange tak for hjælpen :-)

Husk at smide et svar, så du kan få dine points

mvh
simsen :-)
Avatar billede mrbonus Novice
22. maj 2007 - 20:02 #17
var så lidt
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