Avatar billede Slettet bruger
07. juli 2005 - 15:55 Der er 21 kommentarer og
1 løsning

Listbox items kan ikke blive sat selected

Jeg sidder og laver en dynamisk webform hvor jeg henter oplysninger fra database.
I listboxen bliver der tilføje elementer og de elementer som passer til det der ligger i databasen skal sættes som selected.

her er der lidt kode:

.aspx
---------------------------------
<asp:listbox id="ListTilknytningstype" runat="server" Rows="10" SelectionMode="Multiple" Width="100%"></asp:listbox>
------------------------------------
codebehind
-------------------------------
   
Public Sub HentListTilknytning(ByVal Type As String)
        DB.SQL("SELECT * From " + Type)
        While DB.Reader.Read()
            Me.ListTilknytningstype.Items.Add(New ListItem(Me.ListTilknytning.Items(Me.ListTilknytning.Items.IndexOf(Me.ListTilknytning.Items.FindByValue(Type))).Text & ": " & DB.Reader.GetString(DB.Reader.GetOrdinal("Navn")), DB.Reader.GetInt32(0)))
        End While
        DB.Con.Close()
    End Sub

    Private Sub ButtonHent_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonHent.Click

            Dim i As Integer
            DB.SQL("SELECT * FROM AktivitetSamling WHERE AID = " & Me.AID.Value)
            While DB.Reader.Read()
            For i = 0 To Me.LISTID.Items.Count - 1
            If Me.LISTID.Items(i).Text.ToString = DB.Reader.GetString(DB.Reader.GetOrdinal("Type")).ToString And Me.LISTID.Items(i).Value.ToString = DB.Reader.GetInt32(DB.Reader.GetOrdinal("TypeID")).ToString Then
            Me.ListTilknytningstype.Items(i).Selected = True
            Me.ListTilknytningstype.Items.FindByValue(DB.Reader.GetInt32(DB.Reader.GetOrdinal("TypeID"))).Selected = True
            End If
              Next
              End While
            DB.Con.Close()
        End If
    End Sub
------------------
Avatar billede Slettet bruger
07. juli 2005 - 15:57 #1
Det er kun denne linie der ikke virker

Me.ListTilknytningstype.Items(i).Selected = True

listbox elementerne kommer på siden men de elementer der skal selected bliver det ikke.
Avatar billede snepnet Nybegynder
07. juli 2005 - 16:03 #2
har du sat SelectionMode til Multiple ?
mvh
Avatar billede snepnet Nybegynder
07. juli 2005 - 16:06 #3
undskyld.... mig der er en padde :o) - missede lige at du havde fikset det.
Avatar billede snepnet Nybegynder
07. juli 2005 - 16:07 #4
umiddelbart vil jeg sige at det bare er din rutine der ikke funger som den skal så .... hvis du debugger - havner du så på de linier der selected det antal gange du forventer?
mvh
Avatar billede Slettet bruger
07. juli 2005 - 16:08 #5
det er ok :)

Jeg har siddet hele natten, gik i seng kl. 8 i morges
Jeg fatter det simpelhent ikke

Jeg har testet og testet og for mig giver det ingen mening
Avatar billede Slettet bruger
07. juli 2005 - 16:09 #6
hvis jeg udskriver de index som skal selectes passer det med dem der er i listen
Avatar billede Slettet bruger
07. juli 2005 - 16:13 #7
Det sjove er at:

I webformen har jeg lavet noget tilsvarende der virker.

Forskellenen ligger i at, i den listbox er elementerne hardcoded, og der vil den gerne sætte selected til true.

men i den listbox hvor at elementerne blive lavet dynamisk vil den ikke
Avatar billede snepnet Nybegynder
07. juli 2005 - 16:26 #8
hmmm... det lyder lidt sært - sådan noget som dette skulle virke fint :

private void Page_Load(object sender, System.EventArgs e)
{
    if(!IsPostBack)
    {
        this.ListBox1.Items.Add("hej");
        this.ListBox1.Items.Add("med");
        this.ListBox1.Items.Add("dig");
    }

    this.ListBox1.Items[0].Selected = true;
    this.ListBox1.Items[2].Selected = true;
}

(også selvom du lægger koden til at selecte i en eventhandler et sted)

hvornår/hvordan lægger du Items i listboxen ?

mvh
Avatar billede Slettet bruger
07. juli 2005 - 16:26 #9
Jeg tror jeg har sporet mig frem til noget...

jeg har fundet frem til at jeg har en _prerender metode som ændre listbox elementerne efter jeg har selected dem
Avatar billede Slettet bruger
07. juli 2005 - 16:28 #10
Private Sub ListTilknytning_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListTilknytning.PreRender
            LoopTilknytning()
    End Sub

    Public Sub LoopTilknytning()
        Me.ListTilknytningstype.Items.Clear()
        Me.LISTID.Items.Clear()
        Dim i As Integer
        For i = 0 To Me.ListTilknytning.Items.Count - 1
            If Me.ListTilknytning.Items(i).Selected = True Then
                HentListTilknytning(Me.ListTilknytning.Items(i).Value)
            End If
        Next
    End Sub
Avatar billede Slettet bruger
07. juli 2005 - 16:30 #11
LoopTilknytning() bliver kaldt efter jeg har selected elementerne

Hvorfor det ved jeg ikk
Avatar billede snepnet Nybegynder
07. juli 2005 - 16:33 #12
prerender kaldes meget sent (tjah... lige før render :o) - og jeg kan se at du fjerner dine item der :
Me.ListTilknytningstype.Items.Clear()
prøv lige at kommenter det kode ud - så funger det sikkert.
mvh
Avatar billede Slettet bruger
07. juli 2005 - 16:35 #13
jeg har fået det til at virker

jeg har brugt ListTilknytning_SelectedIndexChanged istedet
Avatar billede Slettet bruger
07. juli 2005 - 16:37 #14
smider du ikke svar ud...
Avatar billede snepnet Nybegynder
07. juli 2005 - 16:37 #15
bare du ikke laver en clear på dine item efter du har lavet dine selections - så vil jeg tro det går :o)
mvh
Avatar billede snepnet Nybegynder
07. juli 2005 - 16:37 #16
jo - et svar kan du godt få :o)
mvh
Avatar billede Slettet bruger
07. juli 2005 - 16:40 #17
jeg kender heller ikek rigtig prerender eventen, synes bare den virkede bedre på et tidspunkt end den anden, men nu kan jeg se at den skal man altså forstå før man anvender den :)
Avatar billede Slettet bruger
07. juli 2005 - 16:43 #18
Kommer svaret ikke vi kan lukke denne her?
Avatar billede snepnet Nybegynder
07. juli 2005 - 16:45 #19
hov - det var meningen at jeg ville svare før :o)
mvh
Avatar billede snepnet Nybegynder
07. juli 2005 - 16:46 #20
og jeps - prerender/render mv er det godt at have styr på... du spørger bare hvis der er noget.
mvh
Avatar billede Slettet bruger
07. juli 2005 - 16:51 #21
tak
Avatar billede Slettet bruger
07. juli 2005 - 16:52 #22
tak
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