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;
ClientScript.RegisterStartupScript(GetType(), "", "
}
#endregion
}
}
原文地址:http://blog.youkuaiyun.com/qinleiji/article/details/6339272