---
title: "Hämta värden från dynamiskt genererade textboxar?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/141434-hämta-värden-från-dynamiskt-genererade-textboxar"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "elisa"
published: "2006-01-24T15:25:43.000Z"
updated: "2006-01-25T15:30:50.000Z"
replies: 11
views: 928
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/141434-hämta-värden-från-dynamiskt-genererade-textboxar"
---

# Hämta värden från dynamiskt genererade textboxar?

## #1 — elisa, 2006-01-24T15:25Z

Hej,

Jag har en funktion som dynamiskt genererar Textboxar. Men hur hämtar man ut de värden som användaren har matat in i textfälten? 
Kan tillägga att jag kodar i C#.

Tacksam för ideér!

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

## #2 — nitro2k01, 2006-01-24T15:32Z

I PHP så kan man komma åt alla element som har skickats genom att gå igenom en array. Troligen finns det en liknande array i ASP, som du kan gå igenom, förslagvis med *for each x in thearray* eller hur man nu gör det i ASP.

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

## #3 — paraxe, 2006-01-24T16:16Z

```
for(int i=0; i<Request.Form.Count; i++)
        {
            Response.Write(Request.Form[i].ToString()+"<br />");
        }
```

 

använd Request.Form.GetKey(i) för att få ut varje textboxs namn

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

## #4 — paraxe, 2006-01-24T16:20Z

Varför du skall använda Request.Form.GetKey(i) är för att du skall kunna filtrera bort "EVENTTARGET" , "EVENTARGUMENT" och "VIEWSTATE" som ligger hidden i formuläret.

Sen kan det vara god ide att filtrera bort "Submit knappen" oxå.

Hoppas detta hjälper!

Mvh

Pär

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

## #5 — Dino, 2006-01-24T17:26Z

Paraxes ide är gammalt asp tänkt. Glöm allt sånt.

[Detta](http://www.webforum.nu/showthread.php?p=847324#post847324) borde du kunna få ut något av.

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

## #6 — Gladh, 2006-01-25T06:50Z

> Jag har en funktion som dynamiskt genererar Textboxar. Men hur hämtar man ut de värden som användaren har matat in i textfälten? 
> Kan tillägga att jag kodar i C#.

Aaahhh klassikt problem.

Man måste tänka till lite här. Man måste komma ihåg att alla websidor är "stateless" alltså de kan inte hålla någon som helst information mellan anropen (visst man kan använda sessions och annant trams, men som utgångs punkt så är de stateless). Det betyder att de kontroller som du har i din ASPX sida är de kontroller som du har när din kodebehind exekveras.

Vilket betyder att om du har en sida och när den sidan genereras så skapar du dynamiska kontroller, dessa kommer att visas på din HTMLsida precis som du vill, men när du gör en postback så kan du inte refererar till dem. Och det beror helt enkelt på att de kontrollerna inte finns.

Som tur för vår del så brukar information om dessa kontroller sparas i viewstaten så att du faktiskt kan återfå informationen om du bara återskapar kontrollerna. nu var det ett tag sedan som jag läste om det, men om man återskapar sina kontroller innan/i Page_Init() eventet så kommer .NET själv att para ihop rätt kontrol med rätt information. Så du behöver i princip bara skapa lika många textboxar med samma ID i din Page_Init() vid din postback och så skall du kunna komma åt information i textboxarana.

Ett annat sätt som vissats i tråden ovan är att host:a dina kontroller i en annan kontroll som finns med i din ASPX sida, och då med hjälp av den kontrollens viewstate så kan .NET själv återskapa dessa kontroller till dig. Repeatern är en sådan utmärkt kontroll.

\- M

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

## #7 — elisa, 2006-01-25T10:49Z

Tack för flera bra svar!

Jag genererar textboxar från värden i databasen och varje textbox tilldelas det ID som motsvaras av aktuellt id i databastabellen. 

**Dino:** hur tilldelar man olika ID enligt ditt kod-exempel?

```
.aspx

            <asp:textbox id="tbAmount" runat="server" />
            <asp:button id="btAmount" text="Ok" runat="server" />
            <asp:button id="btGet" runat="server" text="Get" />
            <asp:repeater id="repData" runat="server">
                <headertemplate>
                    <table>
                </headertemplate>
                <itemtemplate>
                    <tr>
                        <td><asp:textbox id="tbGrr" runat="server" /></td>
                    </tr>
                </itemtemplate>
                <footertemplate>
                    </table>
                </footertemplate>
            </asp:repeater>
            <br/>
            <asp:label id="lbGet" runat="server" />
```

 

```
.aspx.cs
        private void btAmount_Click(object sender, System.EventArgs e)
        {
            string[] s = new string[int.Parse(tbAmount.Text)];
            repData.DataSource = s;
            repData.DataBind();
        }

        private void btGet_Click(object sender, System.EventArgs e)
        {
            foreach(RepeaterItem ri in repData.Items)
            {
                if(ri.ItemType == ListItemType.Item || ri.ItemType == ListItemType.AlternatingItem)
                {
                    lbGet.Text += string.Format("{0}<br/>",((TextBox)ri.FindControl("tbGrr")).Text);
                }
            }
        }
```

//Elisa

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

## #8 — Dino, 2006-01-25T13:39Z

```
      <asp:repeater id="repData" runat="server">
        <headertemplate>
          <table>
        </headertemplate>
        <itemtemplate>
          <tr>
            <td>
              <asp:label id="lbId" visible="False" runat="server" />
              <asp:textbox id="tbGrr" runat="server" /></td>
          </tr>
        </itemtemplate>
        <footertemplate>
          </table>
        </footertemplate>
      </asp:repeater>
      <br/><asp:button id="btGet" runat="server" text="Get" /><br/>
      <asp:label id="lbResult" runat="server" />
```

```
private void Page_Load(object sender, System.EventArgs e)
{
   if(!IsPostBack)
      Bind();
}

private void Bind()
{
   //Hämta datan
   int[] i = {1,3,5,7,9}; 

   repData.DataSource = i;
   repData.DataBind();
}

private void repData_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
   if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
   {
      int i = (int)e.Item.DataItem;

      ((Label)e.Item.FindControl("lbId")).Text = i.ToString();
   }
}

private void btGet_Click(object sender, System.EventArgs e)
{
   foreach(RepeaterItem ri in repData.Items)
   {
      if(ri.ItemType == ListItemType.Item || ri.ItemType == ListItemType.AlternatingItem)
      {
         TextBox tb = ri.FindControl("tbGrr") as TextBox;
         Label lb = ri.FindControl("lbId") as Label;

         lbResult.Text += string.Format("{0}. {1}<br/>",lb.Text, tb.Text);
      }
   }
}
```

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

## #9 — elisa, 2006-01-25T14:05Z

Ok, tack.
Ser inte att man refererar till funktionen "repData_ItemDataBound" någonstans. Ska den också vara med?

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

## #10 — Dino, 2006-01-25T14:21Z

```
private void InitializeComponent()
{    
   this.btGet.Click += new System.EventHandler(this.btGet_Click);
   this.Load += new System.EventHandler(this.Page_Load);
   this.repData.ItemDataBound += new RepeaterItemEventHandler(repData_ItemDataBound);
}
```

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

## #11 — elisa, 2006-01-25T14:36Z

Tack nu fungerar det bättre.

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

## #12 — paraxe, 2006-01-25T15:30Z

> **Dino skrev:**
>
> Paraxes ide är gammalt asp tänkt. Glöm allt sånt.
> 
> [Detta](http://www.webforum.nu/showthread.php?p=847324#post847324) borde du kunna få ut något av.

  :r  (y)  ;)

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/141434-hämta-värden-från-dynamiskt-genererade-textboxar
