---
title: "Problem med många textboxar"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/178801-problem-med-många-textboxar"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "saw"
published: "2009-05-31T16:56:20.000Z"
updated: "2009-06-01T14:54:43.000Z"
replies: 11
views: 608
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/178801-problem-med-många-textboxar"
---

# Problem med många textboxar

## #1 — saw, 2009-05-31T16:56Z

Jag försöker att ta hand om flera textboxar så här:

```
private void rensaTextbox()
    {
        TextBox[] tBet = new TextBox();
        for(int i = 1;i<10;i++)
        {
            tBet[i].Text = "";
        }
    }
```

..och får då error

```
Det går inte att implicit konvertera typen System.Web.UI.WebControls.TextBox 
till System.Web.UI.WebControls.TextBox[]
```

Tacksam för förslag.  :h

\[REDIGERAT\]
Jag försöker så här

```
TextBox[] tBet = new TextBox[10];
        for (int i = 0; i < 10; i++)
        {
            tBet[i] = new TextBox();
            tBet[i].Text = "0";
        }
```

Inga felmedelanden men ingenting händer...

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

## #2 — NETwork, 2009-06-01T07:01Z

Nu skapar du bara en massa nya textboxobjekt, antar att du vill göra detta på redan befintliga? Du får loopa igenom alla kontroller på sidan, se efter om de är av typen textbox och sedan sätta värdt (eller tömma dem eller vad du försöker göra). Nåt i den här stilen:

```
protected void ClearAllTextBoxes() {
  foreach (Control c in Page.Controls) {
    // om det är en textbox, radera
    if ((c.GetType() == typeof(TextBox)))
      ((TextBox)(c)).Text = string.Empty;
  }
}
```

Har du andra kontroller som innehåller textboxar så kan du försöka kalla på funktionen rekursivt inne i foreach-loopen, modifiera den lite så att du tar kontrollen med kontroller som inparameter i funktionen.

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

## #3 — NETwork, 2009-06-01T07:10Z

Hittade förresten ett javascript så slipper du göra en postback. :) 

```
<script language="javascript" type="text/javascript">
function clearinputs(sType) {
  a = document.getElementsByTagName("input");
  for(i = 0; i < a.length; i++) {
    if(a[i].type==sType) {
      a[i].value = "";
    }
  }
}
</script>

<button onclick="clearinputs('text');">Reset</button>
```

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

## #4 — saw, 2009-06-01T10:11Z

Hej.
Jag har inte testat java-scriptet men ditt första får jag inte att fungera.
Det är inga error, men ingenting händer.

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

## #5 — NETwork, 2009-06-01T11:21Z

Hm, kanske inte är page-objektet du ska loopa igenom då... använder du master pages? Prova page.parent.controls?

edit, se näst sista inlägget i denna tråd:
<http://forums.asp.net/t/1033056.aspx>

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

## #6 — saw, 2009-06-01T13:12Z

Hur jag än gör så blir det error med "objectsreferensen har ej angivits...".
Vad jag inte kan förstå är att om jag kan 

```
tBet1.Text = "0";
        tBet2.Text = "0";
        tBet3.Text = "0";
        tBet4.Text = "0";
        tBet5.Text = "0";
        tBet6.Text = "0";
```

..ifrån codebehind, varför kan jag inte då göra en lop (som jag visade högst upp).
Jag förstår inte skillnaden.

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

## #7 — freguz, 2009-06-01T13:32Z

jo man kan loopa mot namnen direkt, typ

```
for (int i = 1; i < 5; i++)
            {
                TextBox tbx = Page.FindControl("tb" + i) as TextBox;
                if(tbx != null)
                    tbx.Text = "";
            }
```

men beroende på din markup så kanske du måste loopa ifrån en placeholder istället, eller vad du nu har för föräldrakontroll till textboxarna.

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

## #8 — NETwork, 2009-06-01T14:14Z

Problemet med en for-loop är också att du måste ge dina textboxar massa ful-idn (id1, id2, id3 osv), kanske inte ett problem men... testa detta, bör hitta och tömma alla dina textbox oavsett din sidstruktur:

```
protected void ClearAllTextBoxes(Control parent) {
  foreach (Control c in parent.Controls) {
    // om det är en textbox, töm
    if ((c.GetType() == typeof(TextBox)))
      ((TextBox)(c)).Text = string.Empty;

    // om du stöter på en kontroll som i sin tur innehåller kontroller
    if (c.HasControls)
      ClearAllTextBoxes(c);
  }
}
```

Anropa med ClearAllTextBoxes(this);

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

## #9 — freguz, 2009-06-01T14:28Z

så länge det är alla texboxar som ska tömmas ja :bire

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

## #10 — saw, 2009-06-01T14:32Z

Tack men...

```
Det går inte att konvertera metodgruppen HasControls till delegattypen bool. 
Tänkte du anropa metoden?
```

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

## #11 — freguz, 2009-06-01T14:34Z

ska nog vara med parenteser

```
c.HasControls()
```

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

## #12 — NETwork, 2009-06-01T14:54Z

> **[freguz skrev:](https://www.webforum.nu/p/1469536)**
>
> så länge det är alla texboxar som ska tömmas ja :bire

Japp, det såklart. :) Skulle jag tömma en del av sidans textboxar så skulle jag lägga dem i en placeholder och så en foreach på den... Men ska man inte göra något som kräver postback så kör på javascriptet!

Självklart ska det vara parentes på HasControls... sorry!

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/178801-problem-med-många-textboxar
