Avatar billede strikerdk Novice
17. november 2008 - 11:39 Der er 7 kommentarer og
1 løsning

Dropdown hvor SelectedIndex indlæses fra DB

Hej Eksperter.

Programmeringssprog: C# & .NET

Jeg har en SELECT-sql der indlæser 3 felter på en asp.net 3.5 side.

Det første og det tredje felt er bare tekstfelter som fungere uden problemer. Det andet felt er en dropdownliste, hvor jeg ønsker at den skal hente strengværdien som står i databasen.

Koden som giver disse 2 fejl er vedhæftet herunder:

- The best overloaded match for 'system.web.ui.webcontrols.listitemcollection.findbyvalue(string)' has some invalid arguments!
Her understreges: DropDownList1

- Argument '1': cannot convert from 'object' to 'string'
Her understreges: MyReader

Er der nogen der kan se hvor fejlen er???

Det skal siges at dropdownlisten indhenter data fra databasen ved pageload, og når den valgte value gemmes, så gemmes den som en streng i databasen.

Formålet med alt dette er, at jeg skal kunne indhente allerede indtastede data, og kunne køre en UPATE-sql på dem.

string html = Editor1.Html;

        bool blFundet = false;

        OleDbConnection MyConnection;
        OleDbCommand MyCommand;
        MyConnection = new OleDbConnection();
        MyConnection.ConnectionString = ConfigurationManager.ConnectionStrings["testDB"].ConnectionString;

        string strSQL = System.Configuration.ConfigurationManager.AppSettings.Get("SQLhentHTML");
        MyCommand = new OleDbCommand(strSQL, MyConnection);
        OleDbDataReader MyReader = null;
        try
        {
            MyConnection.Open();
          //MyCommand.Parameters.Add(("@strHTML"), OleDbType.VarChar);       
          // MyCommand.Parameters["@strHTML"].Value = Editor1.Html;

            MyReader = MyCommand.ExecuteReader();
            while (MyReader.Read() == true)
            {
                //Angiver hvilke felter i databasen der hentes fra og hvortil de skrives
                lblDato2.Text = Convert.ToString(MyReader["SendtDato"]);
                DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByValue(MyReader["Modtager"]));
                Editor1.Html = Convert.ToString(MyReader["Indhold"]);
            }
            MyReader.Close();
            MyConnection.Close();
            MyCommand.Dispose();

        }
        //undtagelser behandles
        catch (Exception exept)
        {
          fejl.Text = Convert.ToString(exept);
        }
Avatar billede strikerdk Novice
17. november 2008 - 11:40 #1
Begge fejl opstår i denne sætning:

DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByValue(MyReader["Modtager"]));
Avatar billede kalp Novice
17. november 2008 - 11:44 #2
er det overhovedet selected index du prøver på og køre?

måske er det:

DropDownList1.SelectedValue = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByValue(MyReader["Modtager"])).ToString();
Avatar billede lasserasch Juniormester
17. november 2008 - 11:44 #3
du mangler at typecast værdien som værende string.

DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByValue(MyReader["Modtager"].ToString()));

/Lasse
Avatar billede lasserasch Juniormester
17. november 2008 - 11:45 #4
Autch der.... Du var 27 sekunder hurtigere end mig med et svar kalp :-)
Avatar billede kalp Novice
17. november 2008 - 11:52 #5
lasserasch >>
Jeg har smidt min ToString forkert, men tanken var den samme:)
desuden har jeg ændret til SelectedValue og ud fra navne IndexOf, så vil det nok ikke fungere:)
Avatar billede strikerdk Novice
17. november 2008 - 12:05 #6
Øj - ja der var tæt løb. Den vil ikke acceptere SelectedValue - her meddeler den at man ikke implecit kan konvertere til en streng. Men som kalp siger, så er det vel et spørgsmål om, hvor man smider konverteringen.

I var godt nok hurtige :-) Denne løste problemet:

DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByValue(MyReader["Modtager"].ToString()));

Jeg vil egentligt gerne giver jer begge point fordi jeg værdsætter jeres hurtige respons:

lasserasch smid et svar her - og kalp smid et her  http://www.eksperten.dk/spm/853099
Avatar billede kalp Novice
17. november 2008 - 12:49 #7
SelectedValue virker hvis der f.eks er følgende i din dropdownbox.

Bog
Mad
Cykel

du kan så skriver

dropdownbox.SelectedValue = "Mad";

hvilket ville placere dit index på "Mad" i dropdownboksen:)

Så skulle det være på plads:D
Avatar billede lasserasch Juniormester
17. november 2008 - 22:14 #8
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