---
title: "ItemDataBound på Repeater..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/91708-itemdatabound-på-repeater"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "fredrik"
published: "2003-12-02T14:21:16.000Z"
updated: "2003-12-05T07:41:28.000Z"
replies: 10
views: 463
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/91708-itemdatabound-på-repeater"
---

# ItemDataBound på Repeater...

## #1 — fredrik, 2003-12-02T14:21Z

Jag har en repeater med en "child"-repeater i dess \<itemTemplate\>. 

Hur gör jag för att trigga OnItemDataBound på ChildRepeatern? 

```
'Körs i ItemDataBound på den första Repeatern
AddHandler CType(e.Item.FindControl("repChild"), Repeater).ItemDataBound, AddressOf MY_METHOD
```

Ovanstående funkar inte... 

Det funkar däremot om jag själv sätter "OnItemDataBound" på ChildRepeatern i HTML-läget, men nånstans ringer en klocka om att det är sämre...

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

## #2 — Gladh, 2003-12-02T16:52Z

nu kan jag inte VB.NET men den koden ser mer ut som att du binder en funktion till eventet än att du triggar det?

Vilket är det du vill göra? Trigga eventet är ju lite överflödigt då det triggas av sig själv så fort du gör en DataBind() på repeatern. 

\- M

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

## #3 — fredrik, 2003-12-03T07:53Z

Nä...nu har jag antingen förklarat för dåligt, eller så har du inte hängt med! :)

1\. Jag har en Repeater, och i den har jag ytterligare en repeater (ChildRepeater).

2\. När jag med ItemDataBound sätter värderna i huvudrepeatern så sätter jag även datasource på ChildRepeatern och gör DataBind() på den.

3\. Nu när Childrepeatern binds så vill jag sätta dess värden i dess ItemDataBound, men det finns ju ingen metod associerad med den händelsen. Så vad jag försökte göra i koden ovanför var att tilldela en händelsehanterare till dess "ItemDataBound" (Det är annars rätt syntax för VB.NET). 
MEN, den tar inte den.

Om jag däremot på Childrepeatern själv i HTML-läget sätter: 
OnItemDataBound="repResult1Detail_ItemDataBound"

Så funkar allt. Men jag vill sätta det i kodläget istället.

Hoppas det blev klarare nu!

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

## #4 — Gladh, 2003-12-03T09:02Z

Okej, du vill binda en function till eventet och inte trigga det.

Det spelar ingen roll om du gör det i HTML-koden eller i VB-koden båda sätt är lika bra/dåliga.

Det fungerar att binda det i koden, därför vore det intressant att se hur din ItemDataBound function för main repeatern ser ut.

följande fungerar bra (C#):

```
			if(repeaterItemEventArgs.Item.ItemType == ListItemType.Item)
			{
				Repeater oRepeater = (Repeater) repeaterItemEventArgs.Item.FindControl("Repeater2");
				oRepeater.ItemDataBound += new RepeaterItemEventHandler(Repeater2_onItemDataBound);

				oRepeater.DataSource = list2;
				oRepeater.DataBind();
			}
```

Testade precis och functionen Repeater2_onItemDataBound kallas precis som den skall.

\- M

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

## #5 — fredrik, 2003-12-03T16:46Z

Vad jag kan se så är det samma som jag har gjort, fast mitt är i VB.NET...

```
        If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then

            'GET PRICE DATA
            With CType(e.Item.FindControl("repResult1Detail"), Repeater)
                .DataSource = NY_LISTA 
                .DataBind()
            End With
        End If
```

Det funkar som sagt klockrent om jag sätter det i HTML-koden. Men jag har för mig att det är sämre för prestandan, då den nu måste verifiera metodnamnet och använda Reflection för att binda metoden till händelsen....

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

## #6 — Gladh, 2003-12-03T20:31Z

I den koden som du har skrivit så har du inte bundet någon metod till ditt event. Men du har kanske utlämnat en del.

Har inte för mig att du måste använda reflection för att få binda metoden till eventet via HTML. 

\- M

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

## #7 — fredrik, 2003-12-04T07:09Z

Nej, det stämmer, koden ovan är bara hur ChildRepeaterns datakälla sätts. Det är koden från post 1 som tidigare även låg där. Alltså:

```
AddHandler CType(e.Item.FindControl("repChild"), Repeater).ItemDataBound, AddressOf MY_METHOD
```

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

## #8 — Gladh, 2003-12-04T07:52Z

Kan du inte skicka med hela koden för mainrepeatern ItemDataBound eventet.

\- M

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

## #9 — fredrik, 2003-12-04T12:54Z

Hela koden är alltså:

```
If e.Item.ItemType = ListItemType.AlternatingItem Or e.Item.ItemType = ListItemType.Item Then

            'GET PRICE DATA
            With CType(e.Item.FindControl("repResult1Detail"), Repeater)
                .DataSource = NY_LISTA 
                .DataBind()
            End With

AddHandler CType(e.Item.FindControl("repChild"), Repeater).ItemDataBound, AddressOf MY_METHOD

        End If
```

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

## #10 — Gladh, 2003-12-04T17:06Z

Okej, det fungerar inte för att du binder din funktion till ditt event EFTER att du har gjort DataBind().

Flytta upp din AddHandler. Innan du gör din With sats så kommer det funger.

\- M

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

## #11 — fredrik, 2003-12-05T07:41Z

Japp, tackar för det. Det funkar.

När man tänker efter är det ju ganska logiskt, eftersom den redan var bunden när jag tilldelade dess händelsehanterare.

Tack!

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/91708-itemdatabound-på-repeater
