none
要如何 在MasterPage 裡讀取動態產生的 textbox 及 button 資料 RRS feed

  • 問題

  •  

    hi,

    有二個問題想請教大家

     

    1.  如何將 button click 事件 建立, 在 master page 底下

    我知道語法如下,

    protected void Page_Load(object sender, EventArgs e)
        {
            Button Button1 = new Button();
            Button1.Click += new EventHandler(Button1_Click);
            Button1.Text = "button";
            td1.Controls.Add(Button1);
        }
      protected void Button1_Click(object sender, EventArgs e)
        {

        }
    但是我在試時,  這個button1_click事件不會被fire

    會有可能是 因為  button1_click 事件己經在 master page 底下存在,

    或則, 需要另一動方法去 建立 動態產生物件的事件(在 master page底下)

     

    2. 有誰知道 如何在 讀取在master page 裡動態產生 textbox 的資料?

    你可以在動態產生textbox時給於id 及name, 但是這些都會被改掉,

    就像用source file去找到了 id 然後使用 findcontrol .

    我還是無法把textbox資料取出來

     

    有人知道如何解上面二個問題嗎?

    2007年10月13日 下午 11:06

所有回覆

  • HI,

     

    您可以將:

     

    td1.Controls.Add(Button1);

    改成:

     

    this.form1.Controls.Add(Button1);

     

    就可以執行到Click事件處理程序了, 如果要抓資料, 或許可以這樣做

     

    this.form1.Controls.IndexOf(Button1)=>抓到編號, 再利用this.form1.Controls[編號]抓到控制項, 再取其屬性

     

    tihs

    2007年10月14日 上午 05:36
  • Dear Lewishsu

    另外一種簡單的解法

     

    程式碼區塊

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

    public partial class _Default : System.Web.UI.Page
    {

        //設定成全域變數(移除也比較方便)
        TextBox text = null;
        Button btnOK = null;

        protected void Page_Load(object sender, EventArgs e)
        {
            btnOK = new Button();
            btnOK.ID = "OK";
            btnOK.Text = "確定否";
            btnOK.Click += new EventHandler(btnOK_Click);

            text = new TextBox();
            text.ID = "txtUserID";
            text.Text = "請輸入帳號";

            this.form1.Controls.Add(text);
            this.form1.Controls.Add(btnOK);
            //this.Controls.Add(btnOK);
        }

        void btnOK_Click(object sender, EventArgs e)
        {
            Response.Write("You choice OK");
            Response.Write("帳號 = " + text.Text);
        }
    }

     

     

    2007年10月14日 下午 07:27
  •  

    十分感謝你的回覆 ,

     

    一開始我就是用你說的方法, 但是這個方法只可以  動態產生textbox, 共沒有辦法 讓button 及btnok_click事件關係建立起來

     

    我之所以需要動態產生表格而輸入資料因為

     

    例如, 你在做客戶feedback時,  針對他們的客服問題, 而自動產生不同的 資料輸入表,

     

    另今天我將所有的textbox及button都設為全區變數, 那我有太多變數要用了...

    2007年10月14日 下午 10:35
  • 你應該要由 Content Page 的角度,而不是用 Master Page 的角度去思考。

     

    不同的 Feedback Form,可以用不同的 Content Page 去實作,最後再套用同一個 Master Page,由 Master Page 去思考只會讓你的設計更亂而已。

     

    Master Page  應該只是共同的 Layout,而不是共同的 Handler ...

    2007年10月15日 上午 02:17
    版主
  •  

    可能沒有說清楚吧..

     

    是在 content page 底下要去動態產生這些textbox的

    2007年10月15日 上午 08:29
  • MasterPage,最主要是讓你在版面上的應用方更點,或者可以說有點便利於以前使用Frame切割視窗的設計,且為了Theme的應用方便,和系統流程應用比較無關,基本上,依你的需求是在客戶選擇不同問題,或客服人員回應不同問題時,

    因應各問題需求,畫面上會有不同的資料欄位項目,基本上,你若是在a.aspx點選問題時,是可以因應不同問題,導向b.aspx,c.aspx.....等,這些頁面都是套同一個MasterPage....而針對這些頁面的資料處理程式,共通部份,也可以統一使用Class or Function做處理,或是進一步導向同一個 xxx.aspx做處理~

    2007年10月19日 上午 01:23