具体代码如下,大家帮帮忙,我如何实现,在调用了此控件的页面回传后,txtbox中还能留值?
现在的情况是:一提交,动态建立的控件立即就被丢掉了。我已经搞了两天了,还没有搞定呢,请各位快快伸出援助之手,谢谢了
public class GridITemplate: ITemplate,IStateManager
{
public GridITemplate()
{
//
// TODO: 在此处添加构造函数逻辑
//
} public void InstantiateIn(Control container) 
{
TextBox txtBox = new TextBox();
            
txtBox.EnableViewState = true;

Unit unit = new Unit(20);
txtBox.Attributes.Add("onkeypress","onKeyPressInputFloat();");
txtBox.Width = unit; container.Controls.Add(txtBox);

Label lbl = new Label();
lbl.Text = "%"; container.Controls.Add(lbl);

}//end the InstantiateIn

解决方案 »

  1.   

    实现方式也很多,挺麻烦的,就说一种简单的。
    如果想在基类中添加控件,而且在客户端操作后,保留控件的客户端最后的状态,你可以
    1 在类中创建一个变量,用来存储这个状态值,当然也可以用Viewstate等东西来存储,但我只说简单的。2 在控件Oninit方法中读取客户此控件的值,一般客户端所有控件的值在Page.Request.Form中都有,不论是不是Runatserver的,你可以使用Page.Request.Form[this.你控件的id值]方式读取,但你的是DataGrid的模板列,可能会在ID后加一些有规律的值,就像在DataGrid中button一样,你自己可以查到。把出去的值放到内存变量中。3 在创建这个控件时,把内存中的值负给这个控件就可以了(例如: txtBox.Text = this._txtBoxValue)。
      

  2.   

    还有你是继承了ITemplate,我不是很清楚。如果只是个普通控件,例如TextBox中添加了一个控件,你可以继承 INamingContainer, IPostBackDataHandler接口然后在bool IPostBackDataHandler.LoadPostData事件方法中取得值。