---
title: "datalist i datalist?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/131997-datalist-i-datalist"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "stolpskottet"
published: "2005-07-29T02:40:38.000Z"
updated: "2005-08-02T15:36:15.000Z"
replies: 5
views: 435
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/131997-datalist-i-datalist"
---

# datalist i datalist?

## #1 — stolpskottet, 2005-07-29T02:40Z

Skulle behöva lite hjälp med mina datalister. Jag försöker att visa en datalist i en annan datalist. 
Fungerar bra så länge jag inte försöker sätta ett 'selectedindex' på den andra datalisten.

Men vad saknar jag för att kunna visa den andra selecteditemtemplaten? 
Ytterst tacksam för ett bra svar!

```
    Dim objDb as New databas

    Sub page_load(ByVal obj As Object, ByVal e As EventArgs)
        dl1.DataSource = objDb.hamtadata("ip")
        dl1.DataBind()
    End Sub
    
    Sub command1(ByVal obj As Object, ByVal e As DataListCommandEventArgs)
        dl1.SelectedIndex = e.Item.ItemIndex
        dl1.DataBind()
    End Sub
    
    Sub bind(ByVal obj As Object, ByVal e As DataListItemEventArgs)
        If e.Item.ItemType = ListItemType.SelectedItem Then
            Dim datalist2 As DataList = CType(e.Item.FindControl("dl2"), DataList)
            datalist2.DataSource = objDB.visainfo(e.Item.DataItem(0))
            datalist2.DataBind()
        End If
    End Sub
```

```

<asp:DataList runat="server" ID="dl1" OnItemCommand="command1" OnItemDataBound="bind">
    
    <SelectedItemTemplate>
        <%#Container.DataItem(0)%>
            <asp:DataList ID="dl2" runat="server" OnItemCommand="command2">
                
                <SelectedItemTemplate>
                    <%#Container.DataItem(0)%>            
                    <%#Container.DataItem(1)%>
                    <%#Container.DataItem(2)%>
                </SelectedItemTemplate>
                
                <ItemTemplate>
                    <asp:LinkButton runat="server" Text='<%#Container.DataItem(0)%>' CommandName='<%#Container.DataItem(0)%>' />
                </ItemTemplate>
            
            </asp:DataList>
    </SelectedItemTemplate>
    
    <ItemTemplate>
        <asp:LinkButton runat="server" Text='<%#Container.DataItem(0)%>' CommandName='<%#Container.DataItem(0)%>' />
    </ItemTemplate>
    
    </asp:DataList>
```

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

## #2 — renholm, 2005-07-29T17:12Z

I OnItemCreated för dl1 bör du kunna hitta dl2 genom FindControl() och på så sätt ändra SelectedIndex.

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

## #3 — stolpskottet, 2005-07-31T18:37Z

Kan du utveckla det där lite?

Jag ska alltså göra en ny händerlsehanterare för **dl1** som kallas genom OnItemCreated?

Hur får jag ut den valda ItemIndex där?

Hur ska jag använda FindControl för att sedan sätta SelectedIndex?

```

CType(e.Item.FindControl("dl2"), DataList)
```

eller

```

CType(dl1.FindControl("dl2"), DataList)
```

 

eller rent av page.findcontrol?

Tack på förhand!

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

## #4 — renholm, 2005-08-01T11:55Z

Skulle satsa på dl2 = CType(e.Item.FindControl("dl2"), DataList); dl2.SelectedIndex = \<vad som helst\>. Här kan du alltså sätta vilken rad som markeras som vald i dl2.

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

## #5 — stolpskottet, 2005-08-01T18:50Z

hmmmmmm...........

ja, har gjort några framsteg

nu kan jag få ut valda indexet för den inre datalisten genom:

```
Sub command2(ByVal obj As Object, ByVal e As DataListCommandEventArgs)
        If e.CommandSource.CommandName = "in" Then
            response.write(e.Item.ItemIndex)
        End If
End Sub

 <asp:DataList ID="dl1">
    
    <SelectedItemTemplate>
                    
            <asp:DataList ID="dl2" runat="server" OnItemCommand="command2" >
                
                <SelectedItemTemplate>
                  
                </SelectedItemTemplate>
                
                <ItemTemplate>
                    <asp:LinkButton runat="server" Text='<%#Container.DataItem(0)%>' CommandName="in" />
                </ItemTemplate>
            
            </asp:DataList>
            
    </SelectedItemTemplate>
    
    <ItemTemplate>
        <asp:LinkButton runat="server" Text='<%#Container.DataItem(0)%>' />
    </ItemTemplate>
    
    </asp:DataList>
```

men det är ju synd att säga att det här fungerar speciellt bra:

```

Sub test(ByVal obj As Object, ByVal e As DataListItemEventArgs)
    If e.Item.ItemType = ListItemType.SelectedItem Then
        Dim dl2 As DataList = CType(Page.FindControl("dl2"), DataList)
        dl2.SelectedIndex = e.Item.ItemIndex
    end if
End sub
```

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

## #6 — stolpskottet, 2005-08-02T15:36Z

Jaha, ska vi då konstatera att det är omöjligt att ställa selectedindex för en datalist i en annan?

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/131997-datalist-i-datalist
