---
title: "Fylla en listbox"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/59901-fylla-en-listbox"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "cyprys"
published: "2002-11-22T08:49:36.000Z"
updated: "2002-11-22T13:24:04.000Z"
replies: 8
views: 293
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/59901-fylla-en-listbox"
---

# Fylla en listbox

## #1 — cyprys, 2002-11-22T08:49Z

Innan fyllde jag en listbox med ett dataset(). Problemet var att jag inte lyckades lägga till en rad längst upp i listboxen som skylle vara tomt på listbox.value. Jag bytte till detta och har stött på ett till problem. Det funkar med koden nedan men problemet är att jag vill ha olika värden i value och text. Försökte skapa en 2-dimensionell array men det ville sig inte. 
Vilket är det bästa sättet att få in varsin kolumn i value/text?

```
Dim conn As new OledbConnection(Application("connstring"))
Dim objcmd As new OleDbCOmmand("SELECT titel & ' - ID: ' & id as newkolumn, id  FROM bildarkiv ORDER BY titel", conn)
Dim aBilder As ArrayList = new ArrayList()
Dim Rs as OleDbDataReader

abilder.Add("-- Välj bild nedan --")
conn.open()
	Rs = objcmd.ExecuteReader()
	while Rs.Read()
		abilder.Add(Rs("newkolumn"))
	end while
conn.close()

Bilder1.DataSource = abilder
Bilder1.Databind()
```

Permalänk: https://www.webforum.nu/p/59901

## #2 — fredrik, 2002-11-22T09:19Z

Du kan göra typ så här:

```
Dim alData As New ArrayList()

        alData.Add(New DataType("Text 1", 1))
        alData.Add(New DataType("Text 2", 2))

        ListBox1.DataTextField = "Text"
        ListBox1.DataValueField = "ID"
        ListBox1.DataSource = alData
        ListBox1.Databind()
```

```
Public Class DataType
    Private m_Text As String
    Private m_ID As Integer

    Friend Sub New(ByVal Text As String, ByVal ID As Integer)
        m_Text = Text
        m_ID = ID
    End Sub

    Public ReadOnly Property Text() As String
        Get
            Return m_Text
        End Get
    End Property

    Public ReadOnly Property ID() As Integer
        Get
            Return m_ID
        End Get
    End Property
End Class
```

Permalänk: https://www.webforum.nu/p/862210

## #3 — cyprys, 2002-11-22T09:37Z

Hmm. Behöver man verkligen skapa en helt ny klass. 
Om man vinklar och skapar med ett dataset() så funkar det med datavaluefield, men hur lägger man till en tom rad högst upp i sådana fall?

Permalänk: https://www.webforum.nu/p/862225

## #4 — fredrik, 2002-11-22T09:55Z

Jodå, det kan man också göra...byggde i förra exemplet bara vidare på din fråga om arraylist...

```
Dim drBlankRef As DataRow = dtData.NewRow()

drBlankRef.Item("Text") = "Välj"
drBlankRef.Item("Value") = "-1"

dtData.Rows.InsertAt(drBlankRef, 0)
```

Ditt "DataTable" heter här alltså "dtData"

Permalänk: https://www.webforum.nu/p/862236

## #5 — cyprys, 2002-11-22T10:09Z

Ok. Jag är med men en sista grej så fixar det sig nog. 
När jag skapar mitt dataset så skapar jag det utan att bilda en datatable. Samt att jag skulle vilja smyga in den tomma raden högst upp i mitt dataset innan jag fyller den med datan från databasen. Hur lösa detta smidigt?

Permalänk: https://www.webforum.nu/p/862247

## #6 — fredrik, 2002-11-22T10:14Z

Då ett "DataSet" bygger på "DataTable" så har du ett DataTable ändå...DataSet.Tables() returnerar nämligen ett DataTable.

Jag tror däremot att du måste lägga till den tomma raden efter du har fyllt DataSet.et från Databasen.

Om du har ett DataSet kan du ist. använda:

```
Dim drBlankRef As DataRow = dsData.Tables(0).NewRow()

drBlankRef.Item("Text") = "Välj"
drBlankRef.Item("Value") = "-1"

dsData.Tables(0).Rows.InsertAt(drBlankRef, 0)
```

...där alltså ditt "DataSet" heter "dsData".

Om du inte använder de övriga funktionerna i ett DataSet (såsom relationer tex) kan du lika gärna använda ett DataTable. Funkar på samma sätt med "Fill", bindings osv. Men har (rimligtvis) mindre "overhead".

Permalänk: https://www.webforum.nu/p/862249

## #7 — cyprys, 2002-11-22T10:23Z

Tack tack. Nu funkar det precis som jag vill.  :)
Dessutom har man lite mer insikt i dataset m.m.  :e

Permalänk: https://www.webforum.nu/p/862257

## #8 — renholm, 2002-11-22T12:12Z

Har du testat detta?

```
Bilder1.DataTextField = "Text"
Bilder1.DataValueField = "ID"
Bilder1.DataSource = objcmd.ExecuteReader()
Bilder1.Databind()

Bilder1.Items.Insert(0, new ListItem("-- Välj bild nedan --", "#"))
```

Permalänk: https://www.webforum.nu/p/862324

## #9 — cyprys, 2002-11-22T13:24Z

Där var det enkla sättet jag var ute efter. :)
Det förra funkade super också. ;)

Permalänk: https://www.webforum.nu/p/862360

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/59901-fylla-en-listbox
