protected System.Web.UI.WebControls.Panel Panel1;
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.HtmlControls.HtmlForm form ;

private void Page_Load(object sender, System.EventArgs e)
{
TextBox tb = new TextBox();
if(!Page.IsPostBack)
{
tb.Text = "1";
}
else
{
tb.Text = "2";
}
Panel1.Controls.Add(tb);
}
第一次进入,tb.text为1,当我按提交按钮后,按我的设想,tb.text的值应该为2,但它却为1!而且我把enableviewstate都去了了也这样,这是怎么会事啊,如何能让我给它赋值?

解决方案 »

  1.   

    你最好在
    private void Page_Init(object sender,System.EventArgs e)
    {
    TextBox tb = new TextBox();
    Panel1.Controls.Add(tb); }
    private void InitializeComponent()
    {    
    this.Button1.Click += new System.EventHandler(this.Button1_Click);
    this.Load += new System.EventHandler(this.Page_Load);
    this.Init += new System.EventHandler(this.Page_Init); }里面声明你的TextBox
      

  2.   

    seehttp://aspalliance.com/articleViewer.aspx?aId=134&pId=
      

  3.   

    谢谢brightheroes(闭关|那一剑的风情) ,不过我刚刚试了没用,5555
      

  4.   

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;namespace csdnTest
    {
    /// <summary>
    /// WebForm1 的摘要说明。
    /// </summary>
    public class WebForm1 : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.Button Button2;

    private void Page_Init(object sender,System.EventArgs e)
    {
    TextBox tb = new TextBox();
    tb.ID = "tb";
    this.Page.Controls[1].Controls.Add(tb);
    }
    private void Page_Load(object sender, System.EventArgs e)
    {
    if(!Page.IsPostBack)
    {
    TextBox tb = (TextBox)this.Page.Controls[1].FindControl("tb");
    tb.Text = "1";
    }
    else
    {
    TextBox tb = (TextBox)this.Page.Controls[1].FindControl("tb");
    tb.Text = "2";
    } } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Button2.Click += new System.EventHandler(this.Button2_Click);
    this.Init += new System.EventHandler(this.Page_Init);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void Button2_Click(object sender, System.EventArgs e)
    {

    } }
    }
      

  5.   

    <%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="csdnTest.WebForm1" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>WebForm1</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
    <form id="Form1" method="post" runat="server">
    <FONT face="宋体">
    <asp:Button id="Button2" style="Z-INDEX: 107; LEFT: 216px; POSITION: absolute; TOP: 488px" runat="server"
    Text="Button2"></asp:Button>
    </FONT>
    </form>
    </body>
    </HTML>
      

  6.   

    拷贝过去
    建立一个新的WebForm
    试试
      

  7.   

    看看
    http://aspalliance.com/articleViewer.aspx?aId=134&pId=很有帮助
      

  8.   

    在private void Page_Load(object sender, System.EventArgs e)后加上  Handles MyBase.Load试一下.
      

  9.   

    动态创建的按钮,只要回发就会消失。你看看这段代码:
    <%@ Page Language="C#" %>
    <script runat="server">    // Insert page code here
             //
              private void Page_Load(object sender, System.EventArgs e)
        {
        if(!Page.IsPostBack)
        {
        TextBox tb = new TextBox();
        tb.Text = "1";
        Panel1.Controls.Add(tb);    }
        else
        {
        Response.Write("exe");    TextBox tb1 = new TextBox();
        tb1.Text = "2";
        Panel2.Controls.Add(tb1);
        }    }    void Button1_Click(object sender, EventArgs e) {
        //Panel1.Controls.Add(tb);    }</script>
    <html>
    <head>
    </head>
    <body>
        <form runat="server">
            <asp:Panel id="Panel1" runat="server">Panel</asp:Panel>
            <asp:Button id="Button1" onclick="Button1_Click" runat="server" Text="Button"></asp:Button>
            <asp:Panel id="Panel2" runat="server">Panel</asp:Panel>
            <!-- Insert content here -->
        </form>
    </body>
    </html>不知道你要实现什么样的功能?