日期:2014-05-18  浏览次数:20471 次

为什么DataGrid 的HeaderTemplate中TextBox.Text完法取出


private   void   Page_Load(object   sender,   System.EventArgs   e)
{
    bindDataGrid2();
}

public   void   bindDataGrid2()
{//本函数为了显示表头(内容为空)
    DataTable   dt   =   new   DataTable();
    Datagrid2.DataSource=dt;
    Datagrid2.DataBind();
}

private   void   btnSave_Click(object   sender,   System.EventArgs   e)
{
    TextBox   txtPackageName   =   null;
    foreach(DataGridItem   item   in   Datagrid2.Controls[0].Controls)
    {
        if(item.ItemType   ==   ListItemType.Header)
        {
              txtPackageName   =   (TextBox)item.FindControl( "txtPackageName ");
              break;
        }
    }
    return;
}

将Datagrid2/HeaderTemplate/txtPackageName.Text设为 " "
txtPackageName   =   (TextBox)item.FindControl( "txtPackageName ");
这行取出的结果   txtPackageName.Text始终等于 " "

如果将Datagrid2/HeaderTemplate/txtPackageName.Text   设为 "ABC "
这行取出的结果   txtPackageName.Text等于 "ABC "

为什么会这样,难道和显示表头(内容为空)有关?


------解决方案--------------------
可以取出来的
再仔细检查一下。
------解决方案--------------------
private void Page_Load(object sender, System.EventArgs e)
{
bindDataGrid2();
}

》》》

private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack) {
bindDataGrid2();
}
}