17. september 2004 - 14:13Der er
9 kommentarer og 1 løsning
hvordan får jeg fat i indputtet fra mine dynemiske tekst bokse
Hej, jeg har lavet nogle dynamiske tekst bokse, kan i hjælpe mig med hvordan jeg får fat i det der nu bliver indtastet i dem under runtime.
jeg har oprettet dem således så jeg får 4 stk lige nu..:
private void Page_Init(object sender, System.EventArgs e) { // Put user code to initialize the page here for (int i = 0; i < 4; i++) { TextBox tb = new TextBox(); tb.ID = "tb" + i.ToString(); al.Add(tb); PlaceHolder1.Controls.Add(tb); } }
private void Page_Load(object sender, System.EventArgs e) { if (IsPostBack) { for (int i = 0; i < 10; i++) { if (al[i] is TextBox) Label1.Text += ((TextBox)al[i]).Text; } } } protected ArrayList al = new ArrayList();
public void Page_Init(object sender, System.EventArgs e) { // Put user code to initialize the page here for (int i = 0; i < 10; i++) { TextBox tb = new TextBox(); tb.ID = "tb" + i.ToString(); al.Add(tb); PlaceHolder1.Controls.Add(tb); } }
Der er ingen grund til at du også vedligeholder et array med tekstboksene selv... De ligger i containeren (i det her tilfælde din placeholder).
private void Page_Load(object sender, System.EventArgs e) { if (IsPostBack) { forearch(Control c in this.PlaceHolder1.Controls) { if (c is TextBox) Label1.Text += ((TextBox)c).Text; } } }
public void Page_Init(object sender, System.EventArgs e) { // Put user code to initialize the page here for (int i = 0; i < 10; i++) { TextBox tb = new TextBox(); tb.ID = "tb" + i.ToString(); PlaceHolder1.Controls.Add(tb); } }
men bortset fra det... er det så ikke i forbindelse med at der trykkes på en knap ell. at du ønsker at rutinen skal køre - og ikke i din page_load ?
altså sådan her (nu får du lige det hele i code-behind):
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls;
namespace EXP2 { public class rumbassen : System.Web.UI.Page { protected HtmlForm Form1; protected Label lblSummery; protected PlaceHolder phContainer;
private void InsertControls() { // først en placeholder med tekstbokse phContainer = new PlaceHolder(); for(int i=0;i<10;i++) { TextBox tb = new TextBox(); tb.TextChanged += new EventHandler(tb_TextChanged); phContainer.Controls.Add(tb); phContainer.Controls.Add(new LiteralControl("<br>")); }
// som indsættes på formen Form1.Controls.Add(phContainer);
// så en label hvor det hele skrive ud. lblSummery = new Label();
// som også sættes ind Form1.Controls.Add(lblSummery);
// og så lige en knap så vi kan lave et postback // det kunne også bare have været i eventhandleren for den - at opdateringen skete Button btnPostback = new Button(); btnPostback.Text = "Just a postback"; Form1.Controls.Add(btnPostback); }
private void tb_TextChanged(object sender, EventArgs e) { // opdaterer kun, hvis der er grund til det. if(!updated) Update(); }
// og smider tekstboksværdierne ind i lblSummary foreach(Control c in phContainer.Controls) { if(c is TextBox) { lblSummery.Text += ((TextBox)c).Text; lblSummery.Text += "<br>"; } }
// vi opdaterer jo her for alle texktbokse... og det behøver vi kun gøre én gang updated = true; }
// VS standard override protected void OnInit(EventArgs e) { InitializeComponent(); base.OnInit(e); }
// VS standard private void InitializeComponent() { this.Load += new System.EventHandler(this.Page_Load); } } }
Bemærk at du ligeså godt kunne have foretaget opdateringen af din label i en handler for klikeventet på knappen.... men ovenstående er lavet på den måde, at uanset hvad det er der forårsager din postback, så vil din label blive opdateret, hvis bare én tekstboks har ændret værdi.
Du skal ikke angivet noget i din aspx-kode for at få dette til at fungere... hvis du opretter en ny form i VS - skal du bare sørge for at disse to linier passer :
namespace EXP2 // namespace kan du angive til det du arbejder i (i VS typisk public class rumbassen : System.Web.UI.Page // skift rumbassen ud med det du har kaldt din form
hov... her har jeg vist sovet lidt - sorry. men... et svar her :o) mvh
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.