Jag har ett antal Lablar som jag vill fyll amed text från en databas. Kan inte VB.NET så du får ursäkta om jag förstår koden lite fel. Nej det har inte med det att göra. Problemet verkar vara att det inte stegas fram i databasen... Du måste "stega" dig fram i datat genom att ta ut en datarow och binda innehållet i den till din label. Tack Mikael, du tog mig in på rätt spår...Fylla Lablar från databas
Label1, Label2, Label3 osv...
Jag skapar en Collection med dessa:
Dim LabelCollection As New Collection
clblNamn.Add(label1)
clblNamn.Add(label2)
clblNamn.Add(label3)
Skapar/fyller en dataadapter med bland annat:
Personal1.Clear()
OleDbDataAdapter1.Fill(Personal1)
(Det fungerar...)
För att fylla Lablarna skriver jag:
For Each ctext In LabelCollection
Me.labelcollection(ii).DataBindings.Add _
(New Binding("Text", Personal1, "Personal.Namn"))
Me.BindingContext(Personal1, "Personal").Position += 1
ii = ii + 1
Next
Problemet är att detta fyller ALLA Lablar med innehållet i sista posten....
Hur ska jag göra för att fylla en label med en post och nästa label med nästa post osv...
/FlorreSv: Fylla Lablar från databas
Det ser ju ut som alla fylls med kolumnen "Personal.Namn". Istället för "Personal.Namn" får du väl ha ett nummer på kolumnen. T.ex:
<code>(New Binding("Text1", Personal1, ii)</code>
/JörgenSv: Fylla Lablar från databas
Raden:
Me.BindingContext(Personal1, "Personal").Position += 1
Förväntas stega ett steg i tabellen men det händer inget. Kontrollerar jag possitionen
så ligger den kvar på 0 både före och efter att raden har körts....
Några ideér?
Kontroll av att kontakt finns med databasen:
"Me.BindingContext(Personal1, "Personal").Count" visar korrekt antal poster i tabellen.
/FlorreSv: Fylla Lablar från databas
Halvt torrkodat exempel
For each label in labelcollection
Dim drwo as datarow
drow = dt.Item(i)
' bind datat med raden som källa
i +=1
next
Tror jag...
//Mikael SandSv: Fylla Lablar från databas
Problemet var att jag knöt Lablarna till en viss position i databasen.
När jag sedan på ett eller annat sätt bläddrade i databasen så ändrades data i alla lablarna.
Lösningen blev denna:
<code>
Dim iAntalposter
iAntalposter = Me.BindingContext(Personal1, "Personal").Count
Dim i = 1
Do
Me.labelcollection(i).Text = Personal1.Personal(i - 1).Namn
i += 1
Loop Until i = iAntalposter + 1
</code>
Nu laddas lablarna med ett namn i varje label...
Tack för hjälpen!
/Florre