---
title: "Hämta värde ur en annan repeater?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/146338-hämta-värde-ur-en-annan-repeater"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "mozilla"
published: "2006-05-02T13:45:20.000Z"
updated: "2006-06-17T13:30:18.000Z"
replies: 3
views: 405
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/146338-hämta-värde-ur-en-annan-repeater"
---

# Hämta värde ur en annan repeater?

## #1 — mozilla, 2006-05-02T13:45Z

Jag 3 stycken nästlade repeater enligt följande mall och bindar sedan mitt dataset vilket innehåller relationer mellan olika tabeller.

```
<asp:Repeater id="level1" runat="server">
  <ItemTemplate>
    <h1><asp:Label id="lblHeader" runat="server" /></h1>

    <asp:Repeater id="level2" runat="server">
      <ItemTemplate>
        <p>[b]<asp:label id="lblNumber" runat="server" />[/b] <asp:Label id="lblText" runat="server" /></p>

        <asp:Repeater id="level3" runat="server">
          <ItemTemplate>
            <li>[b]<asp:label id="lblNumber" runat="server" />[/b] <asp:label id="lblList" runat="server" /></li>
          </ItemTemplate>
        </asp:Repeater>

      </ItemTemplate>
    </asp:Repeater>

  </ItemTemplate>
</asp:Repeater>
```

Jag vill i lblNumber skriva ut vilken iteration som man är på, detta gör jag i level2 genom **(e.Item.ItemIndex + 1)**. Men i level3 vill jag fortfarande skriva ut level2's iterationsnummer. Men jag lyckas inte komma åt den repeatern. För att skriva ut iterationsnummer för level1 kan man använda **(level1.Items.Count + 1)**. Men hur gör jag för att hitta level2 repeatern i level3?

Någon som förstår vad jag menar? :)

Önskat resultat
**Rubrik**
*1\. texten*
\* 1.1 foo
\* 1.2 bar
**Rubrik**
*2\. texten*
\* 2.1 foo
\* 2.2 bar

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

## #2 — mozilla, 2006-05-04T15:57Z

Okej, verkar som ingen förstår :OO 

Försöker förklara det en gång till, glöm bort det jag sa i första inlägget om det komplicerar till sakerna?

Jag vill helt enkelt komma åt en repeater som ligger i en annan repeater. Att bara använda namnet på repeatern fungerar inte. Och mina försök med FindControl och liknande vill inte riktigt fungera.

Dvs, när jag använder

```
level2.Items.Count
```

klagar den på att den inte hittar min repeater med id="level2

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

## #3 — Dino, 2006-05-04T18:11Z

Otestad kod. Lek lite med den så borde du komma fram till något.

```
//.aspx
<asp:Repeater id="repLevel1" onitemdatabound="repLevel1_itemdatabound" runat="server">
  <ItemTemplate>
    <asp:label id="lbLevel1" runat="server" />
    <asp:Repeater id="repLevel2" onitemdatabound="repLevel2_itemdatabound" runat="server">
      <ItemTemplate>
        <asp:label id="lbLevel2" runat="server" />
        <asp:Repeater id="repLevel3" onitemdatabound="repLevel3_itemdatabound" runat="server">
          <ItemTemplate>
             <asp:label id="lbLevel3" runat="server" />
          </ItemTemplate>
        </asp:Repeater>
      </ItemTemplate>
    </asp:Repeater>
  </ItemTemplate>
</asp:Repeater>

//.cs
private int _level1Counter = 0;
private int _level2Counter = 0;
private int _level3Counter = 0;

public void repLevel1_itemdatabound(object sender, RepeaterItemEventArgs e)
{
   if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
   {
      this._level1Counter++;
      ((Label)e.Item.FindControl("lbLevel1")).Text = "Något";
      Repeater rep = e.Item.FindControl("repLevel2") as Repeater;
      rep.DataSource = GetDataForLevel2();
      rep.DataBind();
      this._level1Counter = 0;
   }
}

public void repLevel2_itemdatabound(object sender, RepeaterItemEventArgs e)
{
   if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
   {
      this._level2Counter++;
      ((Label)e.Item.FindControl("lbLevel2")).Text = string.Format("{0}.{1}", this._level1Counter.ToString(), this._level2Counter.ToString());
      Repeater rep = e.Item.FindControl("repLevel3") as Repeater;
      rep.DataSource = GetDataForLevel3();
      rep.DataBind();
      this._level2Counter = 0;
   }
}

public void repLevel3_itemdatabound(object sender, RepeaterItemEventArgs e)
{
   if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
   {
      this._level3Counter++;
      ((Label)e.Item.FindControl("lbLevel3")).Text = string.Format("{0}.{1}", this._level2Counter.ToString(), this._level3Counter.ToString());
      this._level3Counter = 0;
   }
}
```

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

## #4 — mozilla, 2006-06-17T13:30Z

Tack för ditt förslag, men det kändes dock lite onödigt när jag misstänkte att informationen redan fanns i mina repeatrar. Och ja har äntligen kommit på hur man gör. Blev så glad så jag kände för att dela med mig :e

```
Repeater level2 = (Repeater)level1.Controls[0].FindControl("level2");
lblNumber.Text = String.Format("{0}.{1}", (level2.Items.Count + 1), (e.Item.ItemIndex + 1));
```

För just hemsidan i fråga är lösningen perfekt (privat hemsida). Men finns det någon nackdel (prestanda) att göra som i mitt exempel?

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/146338-hämta-värde-ur-en-annan-repeater
