Avatar billede mikkel251 Seniormester
21. juli 2016 - 20:43 Der er 17 kommentarer og
1 løsning

selectedValue dropdownlist

Hej eksperter.

Jeg har 3 overskrifter jeg vil kunne vælge i dropdownlisten og når jeg vælger dem så skal det indhold der høre til vises i en textbox og der er overskrift og indhold, men jeg har et problem når jeg vil vælge den SelectedValue så får jeg denne her fejl

Serverfejl i programmet '/'.

Inputstrengen var ikke i et korrekt format.

Beskrivelse: Der opstod en undtagelse, der ikke blev behandlet, under udførelse af den aktuelle webanmodning. Se staksporingen for at få flere oplysninger om fejlen, og hvor den kom fra i koden.

Detaljer om undtagelse: System.FormatException: Inputstrengen var ikke i et korrekt format.

Kildefejl:


Linje 85:       
Linje 86:
Linje 87:        int _ID = Convert.ToInt32(ddlBokse.SelectedValue);
Linje 88:       
Linje 89:        foreach (DataRow drBoks in objForsiden.HentBoksIndhold(_ID).Rows)

Kildefil: c:\Users\mikk032r\Dropbox\web17 projekt\web17\admin\Default.aspx.cs    Linje: 87

Staksporing:


[FormatException: Inputstrengen var ikke i et korrekt format.]
  System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) +11783513
  System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +120
  System.Convert.ToInt32(String value) +49
  admin_Default.ddlBokse_SelectedIndexChanged(Object sender, EventArgs e) in c:\Users\mikk032r\Dropbox\web17 projekt\web17\admin\Default.aspx.cs:87
  System.Web.UI.WebControls.ListControl.OnSelectedIndexChanged(EventArgs e) +116
  System.Web.UI.WebControls.DropDownList.RaisePostDataChangedEvent() +138
  System.Web.UI.WebControls.DropDownList.System.Web.UI.IPostBackDataHandler.RaisePostDataChangedEvent() +15
  System.Web.UI.Page.RaiseChangedEvents() +132
  System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1559

Versionsoplysninger: Microsoft .NET Framework version:4.0.30319; ASP.NET version:4.6.1055.0

Codebehind koden.
int _ID = Convert.ToInt32(ddlBokse.SelectedValue);
     
        foreach (DataRow drBoks in objForsiden.HentBoksIndhold(_ID).Rows)
        {
            txtOverskriftBox1.Text += drBoks["fldIndhold"].ToString();
        }

Metoden
  public DataTable HentBoksIndhold(int _ID)
    {
        cmd = new SqlCommand("SELECT * FROM Web17Bokse WHERE fldId=@id");
        cmd.Parameters.AddWithValue("@id", _ID);
        return DA.GetData(cmd);
    }

hvad gør jeg forkert
21. juli 2016 - 21:11 #1
Hej Mikkel,

Kunne du evt. få udskrevet/logget hvad "ddlBokse.SelectedValue" indeholder, når du vælger en værdi og får fejl. Det vil hjælpe til at forstå i min ende. Jeg ved ikke om et mellemrum kan være et problem. I så fald ville jeg omkranse det du logger med f.eks. ">(værdi)<"

Mvh. Maya
Avatar billede arne_v Ekspert
22. juli 2016 - 01:08 #2

Jeg har 3 overskrifter jeg vil kunne vælge i dropdownlisten og når jeg vælger dem så skal det indhold der høre til vises i en textbox
...
int _ID = Convert.ToInt32(ddlBokse.SelectedValue);


Umiddelbart lyder det som om at listen indeholder overskrifter og at SelectedValue dferfor ogsaa vil indeholde en overskift.

Og derfor en af:

string valgtoverskift = ddlBokse.SelectedValue;

int valgtindex = ddlBokse.SelectedIndex;
Avatar billede mikkel251 Seniormester
22. juli 2016 - 11:06 #3
Maya Kathrine Andersen det er en string den skal udskrive og jeg kan se på arnes eksempel at jeg gør det forkert :D jeg prøver det lige og så vender ejg tilbage hvis jeg ikke kan få det til at virke :D
Avatar billede mikkel251 Seniormester
22. juli 2016 - 11:28 #4
Jeg prøvede den arne skrev men når jeg så vælger den overskrift jeg vil redigere så putter den overskriften i den rigtige textbox, men når jeg så vlger en ny så får jeg den første jeg valgte plus den nye overskrift :D og jeg kan ikke huske hvordan det er man gør så den første forsvinder når man vælger en ny
Avatar billede arne_v Ekspert
22. juli 2016 - 14:19 #5
txtOverskriftBox1.Text = "";

et passende sted.
Avatar billede mikkel251 Seniormester
22. juli 2016 - 16:50 #6
jeg fik det til at virke med den her kode

Codebehind:
    string _ValgtOverskrift = ddlBokse.SelectedValue;
        txtOverskriftBox1.Text = "";
        CKEditorBox1.Text = "";
        foreach (DataRow drBoks in objForsiden.HentBoksIndhold(_ValgtOverskrift).Rows)
        {
            txtOverskriftBox1.Text += drBoks["fldOverskrift"].ToString();
            CKEditorBox1.Text += drBoks["fldIndhold"].ToString();           
        }

METODEN
    public DataTable HentBoksIndhold(string _ValgtOverskrift)
    {
        cmd = new SqlCommand("SELECT * FROM Web17Bokse WHERE fldOverskrift=@overskrift");
        cmd.Parameters.AddWithValue("@overskrift", _ValgtOverskrift);
        return DA.GetData(cmd);
    }

Så min fejl var at jeg prøvede at hente en int som i virkligheden var en string og var så derfor at den ikke kunne finde SelectedValue, er jeg helt forkert på den der ?? :D
Avatar billede arne_v Ekspert
22. juli 2016 - 18:48 #7
Den kunne godt finde SelectedValue, men den kunne ikke konvertere parse den til en int.
Avatar billede mikkel251 Seniormester
22. juli 2016 - 20:08 #8
Men var det ikke fordi at den prøver at hente en string og convetere den til en int og vise det som en string ?
Avatar billede arne_v Ekspert
22. juli 2016 - 20:36 #9
Jo.
Avatar billede mikkel251 Seniormester
22. juli 2016 - 20:57 #10
Så forstår jeg den ?
Avatar billede arne_v Ekspert
22. juli 2016 - 20:59 #11
Ja.
Avatar billede mikkel251 Seniormester
23. juli 2016 - 15:09 #12
hvordan får man et fontawesome ikon med i en foreach løkke hvis løkken viser 3 bokse og hver boks skal have sit eget ikon sammen med overskriften??
23. juli 2016 - 16:00 #13
Så laver du en switch sætning eller en række if sætninger inde i løkken som skifter ikonet ud alt efter hvad overskriften er. .
Avatar billede mikkel251 Seniormester
23. juli 2016 - 16:27 #14
er det ikke nemmest med en switch??
Avatar billede arne_v Ekspert
24. juli 2016 - 01:19 #15
En separat metode med en switch er en mulighed.

Eller brug et Dictionary som mapper fra det ene til det andet.
Avatar billede mikkel251 Seniormester
24. juli 2016 - 10:48 #16
Det skal jeg lige side og rode med ??
Avatar billede arne_v Ekspert
24. juli 2016 - 23:06 #17
Konceptet er meget simpelt.

Som console app:


using System;
using System.Collections.Generic;

namespace E
{
    public class Program
    {
        private static Dictionary<string, string> HeadLine2Icon = new Dictionary<string, string>() { { "Overskift A", "IconA.png" }, { "Overskift B", "IconB.png" }, { "Overskift C", "IconC.png" } };
        public static void Main(string[] args)
        {
            Console.WriteLine(HeadLine2Icon["Overskift B"]);
            Console.ReadKey();
        }
    }
}
Avatar billede mikkel251 Seniormester
24. juli 2016 - 23:39 #18
Den er en svær en ? men jeg må lige se om jeg kan finde ud af den imorgen ?
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

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