---
title: "UserControl som automagiskt hämtar db id?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/160195-usercontrol-som-automagiskt-hämtar-db-id"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Travoni"
published: "2007-05-11T21:28:55.000Z"
updated: "2007-05-15T07:31:41.000Z"
replies: 14
views: 514
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/160195-usercontrol-som-automagiskt-hämtar-db-id"
---

# UserControl som automagiskt hämtar db id?

## #1 — Travoni, 2007-05-11T21:28Z

Jag registrerar en usercontrol på sidan som vanligt och varje gång jag "lägger in den" på sidan så vill jag att controllen skall hämta en viss post ifrån en databas.

Ex. 

```
<@ Register bla @>

1. <uc:bla runat="server" />
...

2. <uc:bla runat="server" />
```

Och ifrån codefilen så anropas ett speciellt id varje gång uc:n körs.
Med classic ASPs getRows() så skulle det vara en baggis att ex. först mata in databasens innehåll med getRows() och sedan hämta det med ett unikt index varje gång UCn körs. ... Men nu är asp.net vi snackar, då vet jag inte hur jag skall göra. Tips tack :)

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

## #2 — P, 2007-05-11T21:34Z

Kan du inte bara hämta in det från Page_Load() i din usercontrol eller förstår jag fel?

Kanske gör det ändå, om jag gör det så kanske du du menar att du vill lägga till kontroller dynamiskt.
Page.Controls.Add(..) i Page_Load() i din .aspx kanske kan vara något att kolla på då.

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

## #3 — Travoni, 2007-05-11T21:37Z

Jo, visst men det är bara vilken metod som skall användas. Men datatable kanske funkar på ungefär liknande sätt. <http://www.developerfusion.co.uk/show/4566/2/>

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

## #4 — P, 2007-05-11T21:39Z

Ja en datatable/dataset/datareader är väl ungefär vad du vill om du vill ha data från t.ex en databas.

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

## #5 — Travoni, 2007-05-11T21:43Z

Kan jag sätta en global variabel som jag ökar på med ett(1) varje gång som UC:n körs?
Hur gör jag det?

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

## #6 — P, 2007-05-11T21:50Z

T.ex 

```
if(Session["Var"] != null)
{Session["Var"] += 1;} else {Session["Var"] = 0;}
```

 och lägg den i page_load i din user_control så ökas den med 1 varje gång den laddas. Du

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

## #7 — Travoni, 2007-05-11T22:08Z

Ok, men måste jag kladda med sessioner? Det handlar bara om en sida, och värdet skall inte tas med till andra sidor, utan bara ifrån uc till uc så att säga.

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

## #8 — butiko, 2007-05-12T11:43Z

Bör väl funka med get och set i din uc. En publik variabel som du sätter till ett värde, nästa gång du anropar en funktion så ökar du bara på med 1. Lite pseudokod:

```
private int x = 0;
public int X {
  set {
    x = value;
  }
  get {
     return x;
  }
}
```

Så kan du hämta o sätta din variabel från den sida där du har inkluderat din uc. Och man kan även göra så här om man vill sätta värdet i presentationslagret:

\<uc:bla X="10" runat="server" /\>

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

## #9 — Travoni, 2007-05-14T15:05Z

Ok, men var plussar jag på värdet?
Det var att slippa göra det i presentationslagret som jag ville skapa en global variabel som "plussades" på med ett varje gång uc:n anropades på en sida.

Detta ger alltid resultatet 0

```
private int x = 0; 

public int cnt { 
 get { 
   return x += 1; 
 } 
 set { 
   x = value; 
 } 
} 

void Page_Load(object sender, EventArgs e) 
{ 
 lbl1.Text = x.ToString; 
}
```

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

## #10 — Pace, 2007-05-14T15:17Z

Ett alternativt sätt att skicka med värden är via [HttpContext.Items](http://msdn2.microsoft.com/en-us/library/system.web.httpcontext.items.aspx). Klassen delas av alla objekt och kan fungera som en "cache" för varje åtkomst (request). Då blir det en baggis att få ta del av egna objekt, oberoende om de skapats i en UserControl, WebControl eller i en vanlig Page.

(Om jag nu har förstått din fråga rätt, jag är inte helt säker.)

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

## #11 — P, 2007-05-14T15:36Z

> **Travoni skrev:**
>
> Ok, men var plussar jag på värdet?
> Det var att slippa göra det i presentationslagret som jag ville skapa en global variabel som "plussades" på med ett varje gång uc:n anropades på en sida.
> 
> Detta ger alltid resultatet 0
>
> ```
> private int x = 0; 
> 
> public int cnt { 
>  get { 
>    return x += 1; 
>  } 
>  set { 
>    x = value; 
>  } 
> } 
> 
> void Page_Load(object sender, EventArgs e) 
> { 
>  lbl1.Text = x.ToString; 
> }
> ```

Vart är den koden hämtat ifrån? Din webcontrol? I så fall så blir det 0 eftersom din variabel inte delas mellan instanserna.

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

## #12 — Travoni, 2007-05-15T06:58Z

Japp, den kommer ifrån controllen.

> ...eftersom din variabel inte delas mellan instanserna

...och därav min fråga. ;)

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

## #13 — erka, 2007-05-15T07:17Z

Du kan ju lägga den i Application

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

## #14 — Travoni, 2007-05-15T07:19Z

Detta verkar funka:

**I Page_Load()**

```
Context.Items["cnt"] += 1;

lbl.Text = Context.Items["cnt"];
```

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

## #15 — erka, 2007-05-15T07:31Z

Ja det är ett sätt att representera state i asp.net, men då är den unik för varje besökare, inte delad, men det var nog bara jag som tolkade dina behov fel, tolkade att alla skulle dela den, my bad.

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/160195-usercontrol-som-automagiskt-hämtar-db-id
