iT邦幫忙

0

C# webform 後端加入textbox要怎麼讀到value

  • 分享至 

  • xImage

大家好:
想請教我想在code behind如果前端符合某些條件,就加入新的textbox和label
我成功加入textbox和label了,但是我不知道要怎麼讀到他的value?
我的label值都讀不到...
以下是程式碼AddTextBox function:

  private void AddTextBox()
    {
        TextBox textbox = new TextBox();
        Label label = new Label();
        DataTable dt = null;
        QueryTable query = new QueryTable();
        dt = query.getIdxCol("20220802" );
      
        List<String> list = null;
        if (dt != null)
        {
            list = dt.Select().Select(dr => dr["colname1"].ToString().Trim()).ToList();
            if (list[0] != "" ) {
                label.ID = list[0];
                label.Text = list[0]; 
                textbox.ID = "price";   
                textbox.Attributes.Add("runat", "server");
                PlaceHolder1.Controls.Add(label);
                 PlaceHolder1.Controls.Add(textbox);
            }
        }
    } 

但是 click btn程式碼這邊都是無法讀到,所以無法執行
click btn function:

protected void btnFetch_Click(object sender, EventArgs e)
    {
       
        string str2=labelA.Text;//抓不到labelA.Text
       //顯示labelA不存在目前內容中
    }

謝謝大家

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

1
實習工程師
iT邦新手 2 級 ‧ 2022-09-05 11:29:31
Label label = new Label();
label.ID = "labelA";
label.Text = "123";
pnlTest.Controls.Add(label);


Label labTest = pnlTest.FindControl("labelA") as Label;
Response.Write(labTest);

測試看看..

神威 iT邦研究生 4 級 ‧ 2022-09-05 13:30:50 檢舉

可是他出現

NullReferenceException: 並未將物件參考設定為物件的執行個體

程式碼我放在w4560000的留言~

if (pnlTest.FindControl("lbl_1") != null)
{
    //試試看..
}
神威 iT邦研究生 4 級 ‧ 2022-09-05 15:15:38 檢舉

我查了一下pnlTest.FindControl("lbl_1")就是null.....所以她不會進去

0
w4560000
iT邦研究生 5 級 ‧ 2022-09-05 11:34:50

Webform 動態創建的控制項,在下一次 Postback 時就會不見,需要重新創建
可以參考此篇 stackoverflow

比如你先從DB撈出資料,可以先存到 viewState
在 Page_Load 時讀取 viewState 自動重新創建控制項

FindControl 可以動態撈出控制項

protected void btnFetch_Click(object sender, EventArgs e)
{
    string str2 = (pl.FindControl("lbl_1") as Label).Text;
}

protected void Page_Load(object sender, EventArgs e)
{
    Label label = new Label();
    label.ID = "lbl_1";
    label.Text = "test";
    pl.Controls.Add(label);
}
看更多先前的回應...收起先前的回應...
神威 iT邦研究生 4 級 ‧ 2022-09-05 13:29:52 檢舉

他出現

NullReferenceException: 並未將物件參考設定為物件的執行個體

my code:

 Label label = new Label();
  label.ID = "txtA1";
   label.Text ="test hello";
   label.Attributes.Add("runat", "server");
   PlaceHolder1.Controls.Add(label);
   
   ////
   
   string str2 = (PlaceHolder1.FindControl("txtA1") as Label).Text;
   txtNum.Text = str2.ToString();
w4560000 iT邦研究生 5 級 ‧ 2022-09-05 13:50:42 檢舉

label 是有在 Page_Load 建立嗎

神威 iT邦研究生 4 級 ‧ 2022-09-05 14:09:40 檢舉

沒有,因為我的label並不是一開始就出現,而是user選到某一選項才會出現的,我有把它寫在button或是下拉選單的change裡面

w4560000 iT邦研究生 5 級 ‧ 2022-09-05 14:11:26 檢舉

你可以先看 stackoverflow 那篇文章,裡面有說明原因

我要發表回答

立即登入回答