webForumDet fria alternativet

Lägga till valda items

.NET

6 svar · 475 visningar · startad av Josef

Medlem sedan mars 20023 561 inlägg
Frågan#1
protected void btnSubmit_Click(object sender, EventArgs e)
{
    int items = lbRolesRequired.Items.Count;

    List<string> lRolesSelected = new List<string>();

    for (int i = 0; i < items; i++)
        if (lbRolesRequired.Items[i].Selected)
            lRolesSelected.Add(lbRolesRequired.Items[i].Text);

    Response.Write(lRolesSelected.Count);
}

Varför får jag 0 oavsett hur många items jag markerar i listan?
lbRolesRequired är en ListBox.

Medlem sedan dec. 19996 721 inlägg
#2

Är de fortfarande markerade efter postback?

Medlem sedan mars 20023 561 inlägg
#3

Nej. Oklart varför. Gör ingen skillnad om jag sätter EnableViewState="true" på kontrollen.

Medlem sedan dec. 19996 721 inlägg
#4

Då är det där problemet ligger. Om möjligt skulle jag vilja se mer kod. Page_Load, bindningar etc.

Medlem sedan mars 20023 561 inlägg
#5

Du är förmodligen mest intresserad av den här:

    protected void ListAllRoles()
    {
        Manager.Roles RMgr = new Manager.Roles();
        List<Model.Role> lRoles = RMgr.GetAll();

        lbRolesRequired.Items.Clear();
        lbRolesRequired.Rows = lRoles.Count;

        if (lRoles.Count == 0)
            lbRolesRequired.Items.Add(new ListItem("<No roles>", "0"));
        else
            foreach (Model.Role r in lRoles)
                lbRolesRequired.Items.Add(new ListItem(r.Name, r.Id.ToString()));

    }

Bättre att sätta en lRoles som datakälla på kontrollen?

Medlem sedan dec. 19996 721 inlägg
#6

Det vore helt klart mer logiskt att sätta datakällan, men jag anar att du binder om kontrollen för ofta. Du tappar alla selected items när du kör ListAllRoles.

Medlem sedan mars 20023 561 inlägg
#7

Såklart! Glömde if:en (Page.IsPostback).

Tack! :)

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