---
title: "Plussa ihop värden"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/78680-plussa-ihop-värden/page2"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "andreas_lindh"
published: "2003-06-02T08:56:24.000Z"
updated: "2003-06-10T06:52:17.000Z"
replies: 23
views: 716
page: 2
pages: 2
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/78680-plussa-ihop-värden"
---

# Plussa ihop värden

_Sida 2 av 2._

## #21 — andreas_lindh, 2003-06-08T21:07Z

Hur fungerar onItemDataBound()?

om jag kör en ny sql-fråga i den. Kan jag då få in värden från den frågan i samma datagrid eller måste jag skapa en ny datalist/repeater som jag skriver ut värden i?

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

## #22 — Gladh, 2003-06-09T07:51Z

onItemDataBound() fungerar så att den körs vid varje gång som du binder ett värde till din datagrid, samt för header och footer.

Det betyder att för varje rad som skall skrivas ut i din datagrid så körs funktionen onItemDataBound() och i den funktionen så kör du en ny databasfråga och hämtar svaret, bygga ihop din sträng, och sedan binda strängen till en label i datagriden. Det är rätt enkelt när man lärt sig, men kan vara lite kluddigt i början.

Du kan läsa mer om ItemDataBound() här: <http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebuiwebcontrolsdatagridclassitemdataboundtopic.asp>

\- M

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

## #23 — andreas_lindh, 2003-06-09T10:56Z

jag har gjorts å här men det fungerar inte

```
Sub Item_Bound(ByVal sender As Object, ByVal e As DataGridItemEventArgs)
Dim spelare As Integer = CInt(CType(e.Item.FindControl("lblSpelare"), Label).Text)
Dim serieID As Integer = CInt(CType(e.Item.FindControl("lblSerieID"), Label).Text)
'hämta från databasen
end sub
```

Jag får felet 
Object reference not set to an instance of an object.

Finns det något annat sätt att få tag på värdena?

Försökte även med 

```
Dim spelare as integer = e.Item.ItemIndex
```

men då får jag bara ut -1
jag har satt Datakeyfield="spelarID" i datgriden

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

## #24 — Gladh, 2003-06-10T06:52Z

Din kod ser rätt ut (kan dock in VB.NET utan bara C#) men du har missat en sak.

Första gången du kommer in i din Item_Bound funtion så är du i "Headern" och inte i någon "Rad". Alltså så finns inte dina kontroller lblSpelare och lblSerieID. Utan du måste kolla så att du är i en "Rad" och inte i "Header" eller "Footern", detta gör du med (i C#) 

```
if((e.Item.ItemType == ListItemType.Item) ||
             (e.Item.ItemType == ListItemType.AlternatingItem))
         {
```

Sedan eftersom dessa två labels inte har något värde så är det ingen mening att hämta information från dem. Du skall däremot sätta deras värde i din Item_Bound så här

```
(CType(e.Item.FindControl("lblSpelare"), Label).Text = e.Item.Cells[1].Text
(CType(e.Item.FindControl("lblSerieID"), Label).Text = e.Item.Cells[2].Text
```

Eller hur man nu gör i VB.NET. Du måste dock läsa på bättre om just e.Item för man kan inte göra riktigt så med all data man binder till kontrollen utan det beror på vilken typ som man binder till sin kontroll.

Själv brukar jag göra klasser av alla mina tabeller i databasen, och varje rad blir ett eget object då kan jag kasta om det till mitt objekt och sedan binda det direkt, så här:

```
.
.
.
CPerson oPerson = (CPerson) e.Item.DataItem;

((Label)e.Item.FindControl("FirstName")).Text = oPerson.FirstName;
((Label)e.Item.FindControl("LastName")).Text = oPerson.LastName;
.
.
.
```

Otroligt smidigt :)

\- m

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/78680-plussa-ihop-värden/page2  
Föregående sida: https://www.webforum.nu/amne/dotnet/78680-plussa-ihop-värden.md
