大家好:
想請教我想在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不存在目前內容中
}
謝謝大家
Label label = new Label();
label.ID = "labelA";
label.Text = "123";
pnlTest.Controls.Add(label);
Label labTest = pnlTest.FindControl("labelA") as Label;
Response.Write(labTest);
測試看看..
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);
}
他出現
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();