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 qqq
{
/// <summary>
/// WebForm3 的摘要说明。
/// </summary>
public class WebForm3 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox TextBox2;
protected System.Web.UI.WebControls.Table Table4;
protected System.Web.UI.WebControls.TextBox TextBox1;
public int v;
public ArrayList myAL=new ArrayList ();
ArrayList myAL1;
CheckBox checkbox;
TextBox textbox;
DropDownList dropdownlist;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
v=int.Parse (Request.QueryString [2]);
for(int i=0;i<v;i++)
{
myAL1 = new ArrayList();
TableRow tr=new TableRow();
tr.HorizontalAlign =HorizontalAlign.Center;
tr.VerticalAlign =VerticalAlign.Middle;
TableCell tc=new TableCell();
checkbox=new CheckBox ();
//checkbox.AutoPostBack =true;
tc.BorderWidth =1;
checkbox.ID ="checkbox"+i.ToString ();
//checkbox.CheckedChanged += new System.EventHandler(mycheckedchanged);
tc.Controls .Add (checkbox);
tr.Controls .Add (tc);
myAL1.Add (checkbox);
tc=new TableCell();
checkbox=new CheckBox ();
checkbox.AutoPostBack =true;
tc.BorderWidth =1;
checkbox.ID ="checkboxA"+i.ToString ();
checkbox.CheckedChanged += new System.EventHandler(mycheckedchanged);
tc.Controls .Add (checkbox);
tr.Controls .Add (tc);
myAL1.Add (checkbox);
tc=new TableCell();
tc.BorderWidth =1;
textbox=new TextBox ();
textbox.BackColor =Color.WhiteSmoke;
//textbox.Height =15;
textbox.Width =80;
tc.HorizontalAlign =HorizontalAlign.Left ;
textbox.BorderStyle =BorderStyle.None ;
textbox.ID ="textboxD"+i.ToString ();
tc.Controls .Add (textbox);
tr.Controls .Add (tc);
myAL1.Add (textbox);
tc=new TableCell();
tc.BorderWidth =1;
dropdownlist=new DropDownList ();
dropdownlist.ID ="dropdownlist"+i.ToString ();
dropdownlist.Items.Add("字符");
dropdownlist.Items.Add("整数");
dropdownlist.Items.Add("文本");
dropdownlist.Items.Add("小数");
dropdownlist.Items.Add("日期");
dropdownlist.BackColor =Color.WhiteSmoke ;
dropdownlist.SelectedIndexChanged+= new System.EventHandler(mydropdownlist1_SelectedIndexChanged);
tc.Controls .Add (dropdownlist);
tr.Controls .Add (tc);
myAL1.Add (dropdownlist);
tc=new TableCell();
tc.BorderWidth =1;
tc.HorizontalAlign =HorizontalAlign.Left ;
textbox=new TextBox ();
textbox.ID ="textboxA"+i.ToString ();
textbox.BorderStyle =BorderStyle.None ;
textbox.BackColor =Color.WhiteSmoke;
textbox.Width =40;
//textbox.Height =15;
tc.Controls .Add (textbox);
tr.Controls .Add (tc);
myAL1.Add (textbox);
tc=new TableCell();
checkbox=new CheckBox ();
tc.BorderWidth =1;
checkbox.ID ="checkboxB"+i.ToString ();
checkbox.CheckedChanged += new System.EventHandler(mycheckedchanged1);
checkbox.AutoPostBack =true;
tc.Controls .Add (checkbox);
tr.Controls .Add (tc);
myAL1.Add(checkbox);
tc=new TableCell();
checkbox=new CheckBox ();
tc.BorderWidth =1;
checkbox.ID ="checkboxC"+i.ToString ();
//checkbox.CheckedChanged += new System.EventHandler(mycheckedchanged);
tc.Controls .Add (checkbox);
tr.Controls .Add (tc);
myAL1.Add (checkbox);
tc=new TableCell();
tc.BorderWidth =1;
dropdownlist=new DropDownList ();
dropdownlist.Items.Add("单行");
dropdownlist.Items.Add("多行");
dropdownlist.Items.Add("范围");
dropdownlist.ID ="dropdownlistA"+i.ToString ();
dropdownlist.BackColor =Color.WhiteSmoke ;
dropdownlist.SelectedIndexChanged+= new System.EventHandler(mydropdownlist1_SelectedIndexChanged);
tc.Controls .Add (dropdownlist);
tr.Controls .Add (tc);
myAL1.Add (dropdownlist);
tc=new TableCell();
tc.BorderWidth =1;
tc.HorizontalAlign =HorizontalAlign.Left ;
textbox=new TextBox ();
textbox.ID ="textboxB"+i.ToString ();
textbox.Width =40;
textbox.BackColor =Color.WhiteSmoke;
//textbox.Height =15;
textbox.BorderStyle =BorderStyle.None ;
tc.Controls .Add (textbox);
tr.Controls .Add (tc);
myAL1.Add (textbox);
tc=new TableCell();
tc.BorderWidth =1;
textbox=new TextBox ();
//tc.HorizontalAlign =HorizontalAlign.Left ;
textbox.BackColor =Color.WhiteSmoke;
//textbox.Height =15;
textbox.ID ="textboxC"+i.ToString ();
textbox.BorderStyle =BorderStyle.None ;
textbox.Width =40;
tc.Controls .Add (textbox);
tr.Controls .Add (tc);
myAL1.Add (textbox);
this.Table4 .Controls .Add (tr);
this.myAL .Add (myAL1);
}
this.TextBox1 .Text =Request.QueryString [0];
this.TextBox2 .Text =Request.QueryString [1];
} #region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

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

}
private void mycheckedchanged(object sender, System.EventArgs e)
{

string i=(((System.Web.UI.WebControls.CheckBox)sender).ID).Remove (0,9);
int j=int.Parse (i);
ArrayList myAL2 = new ArrayList();
myAL2=(ArrayList)this.myAL[j];
((CheckBox)myAL2[5]).Enabled =false;
Response.Write (this.myAL .Count .ToString ());
Response.Write (this.Table4 .Rows .Count .ToString ());
}
private void mycheckedchanged1(object sender, System.EventArgs e)
{
string i=(((System.Web.UI.WebControls.CheckBox)sender).ID).Remove (0,9);
int j=int.Parse (i);
//this.myAL .RemoveAt (j);
this.Table4 .Rows.RemoveAt (j+1);



}
private void mydropdownlist1_SelectedIndexChanged(object sender, System.EventArgs e)
{
//checkboxA0
}
}
}

解决方案 »

  1.   

    你把自动生成的代码直接加在Page_Load里,每次提交到服务器端后,原来自动创建Table里的控件和状态都不会保存,而是重新创建一个和原来相同的Table
    so……
      

  2.   

    谢谢hgknight兄,那我应该怎么办??控件状态我觉的它在保存呀,每次点击
    mycheckedchanged的时候,两个相关联的checkbox状态并没有改变。
      

  3.   

    原来创建的事件都在,不过Page_Load后事件响应处理的对象就是重新创建的Table了
    代码太长,我没仔细看,不知你要实现什么功能
    一般方法是用ViewState保存状态,下次创建时(Page.IsPostBack)根据ViewState的状态来创建
      

  4.   

    我是想将以前在ASP中做的“应用向导”移植到.NET上来。这个页面是想让用户初始化数据库,每一行代表一个字段,其中有两个checkBox,A代表“关键字”,B“是否可为空”。所以选择A时B灰化。我现在就是想让用户自己添加和删除字段