Hej lägg till en ny combobox som du döljer och väljer samma indexplats som vald handläggare. Kanske en fulfix men... Joakim, Tjena Inte i WinForm, som jag skrev att jag utgick ifrån. Arbetar man med WebForm så måste man anropa Vi använder en db komponent som returnerar dataset valet att få en datatabel eller reader finns ej ännu kommer troligen. Den är ny. Lite kod Och på vilken av dessa rader smäller den ? Det är inte helt otänk bart att det är <b>dsHandlaggare.Tables(0).Rows.Count</b> som det blir fel på.. prova att skriva ut <b>dsHandlaggare.Tables.Count</b> för att se att du verkligen har någon tabell. Verkar vara denna som smäller. Men när man klickar OK på felmeddelandet så startar allt upp och comboboxen är laddad. Joakim, Det är raden som jag sa ovan som inte funkar. Men den laddar boxen efter meddelandet. Skall det vara en vanlig combobox som klarar av det. Jag har denna kod som jag kör nu lite ful kod men det funkar. Tja, Ja det vore bättre att få din kod att funka skall se vad jag kan göra får behålla den andra så det fungerar så länge.Hur får jag comboboxen laddad
Jag har en sub som ser ut enligt nedan. Vad jag vill är att få in både handläggare och id i comboboxen. Som det är nu kommer bara handläggare in. Hur får jag till id så att jag kan läsa ut det och spara till db.
Datasetet innehåller allt.
Private Sub LaddaCombo()
Dim dsHandlaggareSCB As DataSet
dsHandlaggare = Server.Facade.UL.GetHandlaggare()
cboHandlaggare.Items.Clear()
cboHandlaggare.Text = ""
If dsHandlaggare.Tables(0).Rows.Count > 0 Then
' Fyller drop down kontrollen
Dim i As Integer
For i = 0 To dsHandlaggare.Tables(0).Rows.Count - 1
'Lägger till handläggare
cboHandlaggare.Items.Add(dsHandlaggare.Tables(0).Rows(i).Item("IdAnvandare",DataRowVersion.Current))
Next i
Else
cboHandlaggare.Items.Add("Det finns inga handläggare")
End If
cboHandlaggare.SelectedIndex = 0
End SubSv: Hur får jag comboboxen laddad
STefanSv: Hur får jag comboboxen laddad
Har du läsa något om <b>databinding</b> i .NET? Om inte så rekommonderar jag dig att göra det. Nu säger du inte om detta är Web eller Winform, då ComboBox kontrollen beter sig lite olika i de båda miljöerna. Jag kommer utgå ifrån att det är i WinForm.
Men innan vi kommer dit. Varför returnerar </b>Server.Facade.UL.GetHandlaggare()</b> ett <b>DataSet</b> istället för en <b>DataTable</b> eller kanske en <b>DataReader</b>? Ett dataset är lite overkill om du bara skall ha en tabell, och en tabell är lite overkill (samt lite långsammare) än en datareader (t.ex SqlDataReader) om du bara skall presentera informationen.
Hur som helst. När du har din datakälla (dsHandlaggare i ditt fall) så binder du denna till din kontroll genom att göra följande
If dsHandlaggare.Tables(0).Rows.Count > 0 Then
With cboHandlaggare
.DataSource = dsHandlaggare.Tables(0)
.DisplayMember = "namnet_på_din_text_kolumn"
.ValueMember = "namnet_på_din_id_kolumn"
End With
Else
cboHandlaggare.Items.Add("Det finns inga handläggare")
End If
Värdet i den kolumnen som du anger som <b>DisplayMember</b> kommer visas i din kontroll, mendans värdet som du anger som <b>ValueMember</b> kommer vara ett associerat värde till den visade texten för varje elment i kontrollen (i ditt fall varje handläggares id).
Du kan sen använda dig av cboHandlaggare<b>.SelectedValue</b> för att få reda på det associerade värdet till den valda posten. Observera att SelectedValue returnerar datatypen <b>Object</b> så du får konvertera denna till t.ex en int med hjälp av <b>CInt, CType, DirectCast</b> eller t.ex <b>Convert.ToInt32</b> metoden.
Sv: Hur får jag comboboxen laddad
Måste du inte köra typ
<code>
.bind()
</code>
också ?
/JohanSv: Hur får jag comboboxen laddad
.DataBind()
Sv: Hur får jag comboboxen laddad
Provar ditt exempel men det funkar inte. Får detta fel.
"Specified argument was out of the range of valid values,
Parameter name: "0" is not a valid value for "index"."Sv: Hur får jag comboboxen laddad
Private Sub LaddaCombo()
Dim dsHandlaggare As DataSet
dsHandlaggare = Server.Facade.UL.GetHandlaggare()
cboHandlaggare.Items.Clear()
cboHandlaggare.Text = ""
If dsHandlaggare.Tables(0).Rows.Count > 0 Then
With cboHandlaggare
.DataSource = dsHandlaggare.Tables(0)
.DisplayMember = "Namn"
.ValueMember = "IdAnvandare"
End With
Else
cboHandlaggare.Items.Add("Det finns inga handläggare")
End If
cboHandlaggare.SelectedIndex = 0
End SubSv: Hur får jag comboboxen laddad
Du kan även prova att ändra till
With cboHandlaggare
.DisplayMember = "Namn"
.ValueMember = "IdAnvandare"
.DataSource = dsHandlaggare.Tables(0)
End With
Sv: Hur får jag comboboxen laddad
.DataSource = dsHandlaggare.Tables(0)
/JoakimSv: Hur får jag comboboxen laddad
Sätt en brytpunkt (breakpoint) på raden med som innehåller <b>Dim dsHandlaggare As DataSet</b> dvs. den första i metoden och stega dig sen igenom med hjälp av F10 för att se exakt vilken rad felet inträffar.Sv: Hur får jag comboboxen laddad
Private Sub LaddaCombo()
Try
Dim dsHandlaggareSCB As DataSet
'Sätter om muspekaren till timglas
Cursor.Current = Cursors.WaitCursor
dsHandlaggareSCB = Server.Facade.UL.GetHandlaggareSCB()
cboHandlaggareSCB.Items.Clear()
cboHandlaggareSCB.Text = ""
cboIdAnvandare.Items.Clear()
cboIdAnvandare.Text = ""
If dsHandlaggareSCB.Tables(0).Rows.Count > 0 Then
' Fyller drop down kontrollen
Dim i As Integer
For i = 0 To dsHandlaggareSCB.Tables(0).Rows.Count - 1
cboHandlaggareSCB.Items.Add(dsHandlaggareSCB.Tables(0).Rows(i).Item("Namn", DataRowVersion.Current))
cboIdAnvandare.Items.Add(dsHandlaggareSCB.Tables(0).Rows(i).Item("IdAnvandare", DataRowVersion.Current))
Next i
Else
cboHandlaggareSCB.Items.Add("Det finns inga handläggare")
End If
'If dsHandlaggareSCB.Tables(0).Rows.Count > 0 Then
' With cboHandlaggareSCB
' .DisplayMember = "Namn"
' .ValueMember = "IdAnvandare"
' .DataSource = dsHandlaggareSCB.Tables(0)
' End With
'Else
' cboHandlaggareSCB.Items.Add("Det finns inga handläggare")
'End If
cboHandlaggareSCB.SelectedIndex = 0
Catch ex As Exception
'Visar felmeddelande
MessageBox.Show(ex.Message())
Finally
'Återställer muspekare
Me.Cursor = System.Windows.Forms.Cursors.Default
End Try
End SubSv: Hur får jag comboboxen laddad
Jag hade inte kört koden alls så som du fått det att fungera, utan hade istället kontrollerat datasetet (och övriga involverade variabler) i debuggern när du kör och hittat anledningen till felet. Hinner inte sätta mig in mer just nu utan får isf återkommer senare.Sv: Hur får jag comboboxen laddad
Tack för hjälpen.
/Joakim