ASP.NET動態生成TextBox並獲取其值
動態生成的文本框,生成的是HTML控件,所以獲取文本框的值 控時,要注意獲取的方法,不同時間獲取的方法不同.(頁面一架載完時的值 和 控件的原有值改變時 兩種情況)
public partial class _Default : System.Web.UI.Page
{
protected
void Page_Load(object sender, EventArgs e)
{
//創建一個文本框
TextBox tbxName = new TextBox();
tbxName.ID = "tbxName";
tbxName.Text = "OK";
this.form1.Controls.Add(tbxName);
//創建一個按鈕
Control c = ParseControl("");
this.form1.Controls.Add(c);
//創建一個按鈕事件
這部份只能放在Page_Load之前。。給按鈕添加事件。
Button myButton = (Button)Page.FindControl("myButton");
myButton.Command += new
CommandEventHandler(this.myButton_Click);
}
protected
void myButton_Click(Object sender, EventArgs e)
{
//獲取文本框的值
由於動態生成的文本框,生成的是HTML控件,所以獲取文本框的值只能用
string strTxtValue=Request.form["txtName"].toString()
來獲取,而不能用
TextBox tb=(TextBox)this.page.form.FindControl("txtName")
string strTxtValue=tb.Text
來獲取(親身體驗獲取不到更改後的值),因爲生成的是HTML控件,而不是Web控件,tb獲取的值是最初的值
}
}
另:
protected void btnSave_Click(object sender, EventArgs e)
{
ArrayList al = new ArrayList();
al.Add(txtAname1);
//txtAname1 爲TextBox 的 id ,代表 TextBox 類型,不是字符串
al.Add(txtAname2);
al.Add(txtAname3);
al.Add(txtAname4);
string[] txtid = { "txtAname1", "txtAname2", "txtAname3", "txtAname4" };
#region 修改
//問題
mTQI = bTQI .GetModel(int.Parse(Request.QueryString["ID"]));
mTQI.QName = Request.Form["txtQname"].ToString().Trim();
mTQI.Qcreatetime =
DateTime.Parse(Request.Form["txtQcreatetime"].Trim());
mTQI.Qa = Request.Form["txtQa"].Trim();
mTQI.Qislist = Request.Form["DropDownList1"].Trim();
//mTQI.Qcreatetime =
DateTime.Parse(txtQcreatetime.Text.Trim());
//這三行獲取不到改變的值
//mTQI.Qa = txtQa.Text;
//mTQI.Qislist = DropDownList1.SelectedValue;
//答案
List lTai2 = new List();
DataSet ds =
bTAI.GetList("aQid="+Request.QueryString["ID"]+"");
lTai2 = bTAI.DataTableToList(ds.Tables[0]);
for (int i = 0; i < lTai2.Count;i++ )
{
//TextBox txt =
(TextBox)FindControl("txtAname1");
string st = Request.Form[txtid[i].ToString()].ToString();
lTai2[i].Aname = st;
}
//修改
numTQ = bTQI.Update(mTQI);
for (int i = 0; i < lTai2.Count; i++)
{
bTAI.Update(lTai2[i]);
}
if (numTQ > 0)
{
btnSave.Enabled = false;