webForumDet fria alternativet

Färdigvalt alternativ i dropdown?

.NET

6 svar · 474 visningar · startad av trexter

Medlem sedan mars 20021 889 inlägg
Frågan#1

Jag använder denna kod för att lägga till ett alternativ i en DropDownList.
Hur gör jag om jag vill att alternativet ska "renderas markerat" ("selected") på sidan?

this.drop_kund.Items.Add(new ListItem(dr1["KundNamn"].ToString(), dr1["KundID"].ToString()));

:)

Medlem sedan mars 20021 889 inlägg
#2

Alltså:

                while (dr1.Read())
                {
                    if (Int32.Parse(dr1["KundID"].ToString()) == intArendeKund)
                    {
                        this.drop_kund.Items.Add(new ListItem(dr1["KundNamn"].ToString(), dr1["KundID"].ToString()));
                        //??????
                    }
                    else {
                        this.drop_kund.Items.Add(new ListItem(dr1["KundNamn"].ToString(), dr1["KundID"].ToString()));
                    }
                }
Medlem sedan sep. 20011 914 inlägg
#3
bool b = (Int32.Parse(dr1["KundID"].ToString()) == intArendeKund) ? true : false;
ListItem l = new ListItem(dr1["KundNamn"].ToString(), dr1["KundID"].ToString());
l.Selected = b;
this.drop_kund.Items.Add(l);
Medlem sedan mars 20021 889 inlägg
#4

Dino, det verkar fungera men låt mig fråga en annan sak.

<option value="2">

Vilken egenskap ska användas för att få ut värdet "2" om användaren valt alternativet. Är det inte SelectedValue? :o

Jag kör nämligen en Insert och en av parametrarna är:

myCommand.Parameters.Add("@ArendeKundNr", SqlDbType.Int, 4).Value = drop_kund.SelectedValue.ToString();

Valen som renderas i HTML-koden är

<option selected="selected" value="2">svantes livs</option>
	<option value="3">b&#246;rjes bilar</option>
	<option value="7">hejh</option>
	<option value="8">hej</option>

Men ändå sparas bara värdet "2" i databasen - även om man valt t ex "hejh"

Medlem sedan mars 20021 889 inlägg
#5

Någon som förstår detta konstiga fel? :)

Medlem sedan sep. 20011 914 inlägg
#6

Antingen har du inte !IsPostBack eller laddar du om datan innan du hunnit ta ut värdet.
Tänk på att Page_Load sker före en kontrolls event.

void Page_Load(object sender, EventArgs e)
{
   if(!IsPostBack)
      BindData();
}

private void BindData()
{
   //Fyll dropdownlisten
}

void InsertKnapp_Click(object sender, EventArgs e)
{
   ...
   myCommand.Parameters.Add("@ArendeKundNr", SqlDbType.Int, 4).Value = drop_kund.SelectedValue;
   ...

   BindData();
}
Medlem sedan mars 20021 889 inlägg
#7

ty :bire

256 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)