none
動態產生控制項產生的存取問題 RRS feed

  • 問題

  • Hi all,

    目前小弟想設計一動態產生的textbox與label, 程式碼如下(我是用ASP.NET+C#), 宣告array, static UI.TextBox[] txt, static UI.Label[] lbl, 之後在Button1_Click後將物件利用array紀錄後, 動態插入page中(Panel1.Controls.Add(txt[i])), 這樣的動作是OK的, 之後再至產生的textbox中填入值, 再將textbox中已填完的值利用Button2_Click寫入一file中, 但是問題來了,我利用loop想將array中的textbox值取出, 但是結果卻是空值, 問題是出在哪呢? 再請協助指點是否觀念有誤? 感謝!


    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using UI = System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.IO;











    namespace WebApplication1 { public partial class _Default : System.Web.UI.Page { static UI.TextBox[] txt; static UI.Label[] lbl; protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { txt = new UI.TextBox[Convert.ToInt32(TextBox2.Text)]; lbl = new UI.Label[Convert.ToInt32(TextBox2.Text)]; int v_loc = 100; int v_factor = 25; for (int i = 0; i < Convert.ToInt32(TextBox2.Text); i++) { v_loc = v_loc + v_factor; int j = 2; if ((j + i) <= Convert.ToInt32(TextBox2.Text)) { lbl[i] = new UI.Label(); lbl[i].Style["Position"] = "Absolute"; lbl[i].Style["TOP"] = v_loc.ToString() + "px"; lbl[i].Style["Left"] = "20px"; lbl[i].Text = "C" + (j + i).ToString(); Panel1.Controls.Add(lbl[i]); //form1.Controls.Add(lbl[i]); txt[i] = new UI.TextBox(); txt[i].Style["Position"] = "Absolute"; txt[i].Style["TOP"] = v_loc.ToString() + "px"; txt[i].Style["Left"] = "50px"; Panel1.Controls.Add(txt[i]); //form1.Controls.Add(txt[i]); } } } protected void Button2_Click(object sender, EventArgs e) { string v_result = ""; string v_loop1 = ""; string v_loop2 = ""; for (int i = 0; i < Convert.ToInt32(TextBox2.Text); i++) { int j = 2; if ((j + i) <= Convert.ToInt32(TextBox2.Text)) { v_loop1 = v_loop1 + "<TH style='background:yellow;padding:.75pt .75pt .75pt .75pt'>" + txt[i].Text + "</TH> "; } } for (int i = 0; i < Convert.ToInt32(TextBox2.Text); i++) { int j = 2; if ((j + i) <= Convert.ToInt32(TextBox2.Text)) { v_loop2 = v_loop2 + "<TD><xsl:value-of select=\"C" + (j + i) + "\"/></TD> "; } } .................以下將loop的字串值寫入file.................... }
    2009年3月31日 上午 02:30

解答

  • Hi all, 小弟的問題已解, 因為在asp中不能像C#一樣直接存取textbox的text值, 因此我在動態新增控制項時也把控制項的ID塞入, 最後在產生檔案是利用requet.form[txt[i].ID]去取得動態產生之textbox的text值, 這樣就能解, 但是觀念上是否正確再請各位指正, 感謝!!
    • 已標示為解答 Lolota Lee 2009年4月2日 上午 09:56
    2009年3月31日 上午 03:54