---
title: "Problem med att fylla dropdown"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/66095-problem-med-att-fylla-dropdown"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "andreas_lindh"
published: "2003-01-25T13:01:44.000Z"
updated: "2005-04-07T12:36:30.000Z"
replies: 17
views: 616
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/66095-problem-med-att-fylla-dropdown"
---

# Problem med att fylla dropdown

## #1 — andreas_lindh, 2003-01-25T13:01Z

Jag har en dropdown i en edittemplate som jag vill fylla med värden från en access databas. Men dropdownen blir tom

```
Public Sub datagrid1_edit(ByVal obj As Object, ByVal e As DataGridCommandEventArgs)
        datagrid1.EditItemIndex = e.Item.ItemIndex
        filldata()
        datagrid1.DataBind()

    End Sub

    Public Sub filldata()
        Dim dpllag_a As DropDownList = New DropDownList()
        Dim dpllag_b As DropDownList = New DropDownList()
        Dim objcmd1 As New OleDbDataAdapter _
                         ("select Namn, Id from deltagande_lag where Cup_id=" & viewstate("c_id") & " order by id", objconn)
        Dim ds1 As DataSet = New DataSet()
        objcmd1.Fill(ds1, "deltagande_lag")
        dpllag_a.DataSource = ds1.Tables("deltagande_lag")
        dpllag_a.DataBind()
        dpllag_b.DataSource = ds1.Tables("deltagande_lag")
        dpllag_b.DataBind()

    End Sub
```

Och så här skriver jag dropdownlisten

```
<asp:dropdownlist id="dpllag_a" width="120" runat="server" visible="True" DataTextField="Namn" DataValueField="id" />
```

hur gör jag för att kolla om värdet i datgriden  är samma som den i dropdownen och gör så att den blir selected?

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

## #2 — Leffo, 2003-01-26T00:49Z

Kolla om du skickar rätt datatyp,
konverta "c_id" till int om det är en string och tvärtom. inte alls säker på att det är just det problemet du har men jag har råkat ut för det.

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

## #3 — andreas_lindh, 2003-01-26T10:22Z

Tack för tipset men tyvärr så hjälpte inte det

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

## #4 — NETwork, 2003-01-27T07:19Z

Eftersom du har din kontroll i en annan kontroll så gissar jag att du måste göra en findcontrol på din datagrid för att hitta din dropdownlist. Alternativt att du sätter datasource='funktion(värde)' i din ddl, alltså en funktion som returnerar giltig data att fylla den med...

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

## #5 — andreas_lindh, 2003-01-27T10:01Z

> Eftersom du har din kontroll i en annan kontroll så gissar jag att du måste göra en findcontrol på din datagrid för att hitta din dropdownlist.

 

Hur gör jag det? Gör jag likadant som när jag hittar textboxar i en datagrid?

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

## #6 — juventus1, 2003-01-27T10:49Z

Ja, precis på samma sätt oavsett vad det är för kontroll som ligger i en datagrid.

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

## #7 — andreas_lindh, 2003-01-27T11:28Z

jag testade med det här

```
Public Sub datagrid1_edit(ByVal obj As Object, ByVal e As DataGridCommandEventArgs)
        Dim dpllaga As DropDownList = e.Item.FindControl("dpllaga")
        Dim dpllagb As DropDownList = e.Item.FindControl("dpllagb")
        datagrid1.EditItemIndex = e.Item.ItemIndex
        Dim objcmd1 As New OleDbDataAdapter _
                         ("select Namn, Id from Deltagande_lag where Cup_id=" & viewstate("c_id") & " order by id", objconn)
        Dim ds1 As DataSet = New DataSet()
        objcmd1.Fill(ds1, "deltagandelag")
        dpllaga.DataSource = ds1.Tables("deltagandelag"). _
        DefaultView
        dpllaga.DataBind()
        dpllagb.DataSource = ds1.Tables("deltagandelag"). _
        DefaultView
        dpllagb.DataBind()
        datagrid1.DataBind()

    End Sub
```

Då får jag detta felmeddelandet

```
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error: 

Line 53:         Dim ds1 As DataSet = New DataSet()
Line 54:         objcmd1.Fill(ds1, "deltagandelag")
Line 55:         dpllaga.DataSource = ds1.Tables("deltagandelag"). _
Line 56:         DefaultView
Line 57:         dpllaga.DataBind()
 

Source File: h:\inetpub\wwwroot\cup\spelschema.aspx.vb    Line: 55
```

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

## #8 — juventus1, 2003-01-27T12:30Z

Prova detta:

```
For i = 0 To dataGrid1.Items.Count - 1
   dataGrid1.Items(i).FindControl("dpllaga").DataSource = ds1.Tables("deltagandelag")
dataGrid1.Items(i).FindControl("dpllagb").DataSource = ds1.Tables("deltagandelag")
Next
```

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

## #9 — andreas_lindh, 2003-01-27T12:38Z

jag provade med det men får då
 'DataSource' is not a member of 'System.Web.UI.Control'.

på dataGrid1.Items(i).FindControl("dpllaga").DataSource = ds1.Tables("deltagandelag")

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

## #10 — NETwork, 2003-01-27T12:59Z

Vet inte hur det är i vb, men i c# så måste du även skriva vilken typ av object det är:

```
((DropDownList)dataGrid1.Items(i).FindControl("dpllaga")).DataSource
```

Sen vet du ju vilket index det är som startat eventet med e.Item.ItemIndex så du behöver inte loopa igenom hela datagriden!

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

## #11 — andreas_lindh, 2003-01-27T13:28Z

Jag testade med det här

```
CType(e.Item.FindControl("dpllaga"), DropDownList).DataSource = ds1.Tables("deltagandelag")
```

Men får då återigen felet
Object reference not set to an instance of an object.

```
Source Error: 

Line 52:         objcmd1.Fill(ds1, "deltagandelag")
Line 53: 
Line 54:         CType(e.Item.FindControl("dpllaga"), DropDownList).DataSource = ds1.Tables("deltagandelag")
Line 55:         CType(e.Item.FindControl("dpllagb"), DropDownList).DataSource = ds1.Tables("deltagandelag")
Line 56:         dpllaga.DataBind()
 

Source File: h:\inetpub\wwwroot\cup\spelschema.aspx.vb    Line: 54
```

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

## #12 — NETwork, 2003-01-27T13:42Z

Du måste nog fortfarande göra din findcontrol på din datagrid alltså, nåt sånt här:

```
.....dataGrid1.Items(e.Item.ItemIndex).FindControl.....
```

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

## #13 — andreas_lindh, 2003-01-27T14:26Z

blir fortfarande samma fel

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

## #14 — NETwork, 2003-01-27T14:47Z

Hm, vi tar den enkla varianten istället. :)

```
<edititemtemplate>
  <asp:dropdownlist DataSource='<%# Function(DataBinder.Eval(Container, "DataItem.Data")) %>' Runat="server"></asp:dropdownlist>
</edititemtemplate>

//och sen en funktion:

protected datasource Function (object o) {
  //vb-kod som jag inte kan...
  return datasource
}
```

Ja, nåt sånt borde funka...

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

## #15 — andreas_lindh, 2003-01-27T15:36Z

Tack. Nu fungerar det.

Här är funktionen

```
Public Function filldg()
        Dim objcmd1 As New OleDbDataAdapter _
                         ("select Namn, Id from Deltagande_lag where Cup_id=" & viewstate("c_id") & " order by id", objconn)
        Dim ds1 As DataSet = New DataSet()
        objcmd1.Fill(ds1, "deltagandelag")

        Return ds1.Tables("deltagandelag")
    End Function
```

En fråga till. Hur får jag "rätt" värde selected i dropdownen

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

## #16 — NETwork, 2003-01-27T16:15Z

> **andreas_lindh skrev:**
>
> Tack. Nu fungerar det.
> En fråga till. Hur får jag "rätt" värde selected i dropdownen

Jadu, då behöver du antagligen få tag på din dropdownlist i alla fall. Jag är tyvärr en sopa på vb men det ska fungera att göra nåt i den här stilen:

```
((DropDownList)DataGrid1.Items[e.Item.ItemIndex].FindControl("myDropDownList")).Items.FindByText("text").Selected = bool;
```

Först tar du alltså ut det index (rad) i din datagrid d'är eventet inträffade, sedan kör du en findcontrol för att hitta kontrollen (kan även göras manuellt genom att ange i vilken kolumn din ddl finns) och därefter söker du på en given text i dropdownlisten och sätter den till selected = true. Någon som är bättre på vb än mig kanske kan ge ett fungerande vb-exempel?

Alternativt kanske du kan labba lite med attributet selectedindex i din dropdownlist och göra någon liknande funktion som du gjorde när du fyllde den?

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

## #17 — NETwork, 2003-01-28T12:29Z

Titta i den här tråden längst ned, Dino har hittat en smidig lösning på ditt problem! :)

<http://www.webforum.nu/showthread.php?s=&threadid=64918>

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

## #18 — xrobx, 2005-04-07T12:36Z

ops, blev lite fel där.

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/66095-problem-med-att-fylla-dropdown
