问题结症:由于点击按钮后,页面产生回发事件,先执行了Page_Load,当IsPostBack==true的时候,网格控件被重新绑定,就清空了里面的TextBox的Text值,所以在按钮单击事件中就取不到TextBox的值了。
解决办法:把按钮单击要执行的代码放在Page_Load中,并放在网格控件绑定之前,先判断网格控件的项数是否大于1,如果是,就执行获取TextBox值的代码,如果不是,就执行绑定网格控件的代码。
Code
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack == true)
{
GetData();//得到DataList中TextBox的值
//绑定DataList
}
}
private void GetData()
{
if (DataList1.Items.Count > 1)
{
foreach(DataListItem item in DataList.Items)
{
TextBox txt = (TextBox)item.FindControl("txt");//在DataList1的Item中找TextBox
string value = txt.Text;//得到值
//执行其他访问数据库的代码
}
}
}