2 动态的添加控件
1)利用PlaceHolder管理控件元素,他就相当于一个容器,可以添加空间也可以删除空间
利用它控制DropDownList,动态显示数据库里面的数据
private void ShowData(PlaceHolder ph)
{
//判断是否为返回页,初始化页面
if((ViewState["state"])!=null)&&((bool)ViewState["state"]))
{
ph.Control.Clear();
DropDownList ddl=new DropDownList();
ddl.ID="ddlid";
ddl.AutoPostBAck=true;
ph.Controls.Add(dll);
}
else
{
ph.Controls.Clear();//清空元素
DropDownList ddl=new DropDownList();
ddl.ID="ddlid";
ddl.AutoPostBack=true;
ph.Controls.Add(ddl);
string strconn=ConfigurationSettings["strconn"];
string strsql="select username from user";
SqlConnection conn=new SqlConnection["conn"];
try
{
conn.Open();
SqlDataAdapter sda=new SalDataAdapter(strsql,conn);
DataSet ds=new DataSet();
sda.Fill(ds,"user");
ddl.DataSource=ds.Tables["user"].DefaultView;
ddl.DataTextFieled="username";
ddl.DataBind();
}
catch(SqlException ex)
{
}
finally
{
conn.Close();
}
ViewState["state"]=true;
}
}
2)利用Panel实现动态DataGrid
private void ShowData()
{
Panel pl=new Panel();
pl.Style["Top"]="30px";
.......//设置panel的属性
this.Controls.Add(pl);//添加到页面上
DataGrid dg=new DataGrid();
BoundColumn bc=new BoundColumn();
bc.DataField="username";
bc.HeaderText="姓名";
dg.Controls.Add(bc);
dg.Style["Left"]=400px;
......//设置dg的样式
pl.Controls.Add(dg);
string strconn=ConfigurationSettings["strconn"];
string strsql="select username from user";
SqlConnection conn=new SqlConnection["conn"];
SqlCommand cmd=conn.CreateCommand();
try
{
conn.Open();
cmd.CommandText ="select username from user";
SqlDataReader dr=cmd.ExecuteReader();
dg.DataSource=dr;
dg.DataBind();
}
catch
{
dr.Close();
conn.Open();
}
}
3)文本框的动态增加和删除
//类TextBoxArray
//加载页面的时候初始化 Session["count"]
public class TextBoxArray:System.Collections.CollectionBase
{
private readonly Control hostpage;
public TextBoxArray(Control hostpage)
{
this.hostpage=hostpage;
}
//增加文本框
public void AddTextBox()
{
TextBox tb=new TextBox();
this.List.Add(tb);//添加到集合列表
hostpage.Controls.Add(tb);//将tb添加到窗体的集合列表
tb.ID=this.Count.ToString();
tb.Style["left"]=120px;
......//设置样式
}
//创建索引
public TextBox this[int index]
{
get
{
return (TextBox)this.List[index];
}
}
public void RemoveTextBox()
{
if(this.count>0)
{
hostpage.Controls.remove(this[this.count-1]);
this.List.RemoveAt(this.count-1);
}
}
}
//显示控件
private void ShowControl(Panel pl)
{
textboxarray tba=new TextBoxArray();
int count=(int)Session["count"];
pl.Controls.Clear();
for(int i=0 ; i<=count;i++)
{
tba.addNewTextBox();
}
}
//调用的方法
private void Add()
{
Session["count"]=(int)Session["count"]+1;
ShowControl();
}
private void Del()
{
Session["count"]=(int)Session["count"]-1;
ShowControl();
}
5 动态添加的控件的事件
private void AddButton(PlaceHolder ph)
{
Button bt1=new Button();
bt1.CommandArgument="bt1";
bt1.Command+=new CommandEventHandler(this.OnButton);
ph.Controls.Add(bt1);
}
private void OnButton(object sender,CommandEventArgs e)
{
switch(e.CommandArgument.ToString().ToLower())
{
case "bt1":
//方法.....
break;
};
}
6 动态添加JS
private void AddJS(Button btn)
{
btn.Attibutes["onclick"]="javascript:alert('OK');";
}
1)利用PlaceHolder管理控件元素,他就相当于一个容器,可以添加空间也可以删除空间
利用它控制DropDownList,动态显示数据库里面的数据
private void ShowData(PlaceHolder ph)
{
//判断是否为返回页,初始化页面
if((ViewState["state"])!=null)&&((bool)ViewState["state"]))
{
ph.Control.Clear();
DropDownList ddl=new DropDownList();
ddl.ID="ddlid";
ddl.AutoPostBAck=true;
ph.Controls.Add(dll);
}
else
{
ph.Controls.Clear();//清空元素
DropDownList ddl=new DropDownList();
ddl.ID="ddlid";
ddl.AutoPostBack=true;
ph.Controls.Add(ddl);
string strconn=ConfigurationSettings["strconn"];
string strsql="select username from user";
SqlConnection conn=new SqlConnection["conn"];
try
{
conn.Open();
SqlDataAdapter sda=new SalDataAdapter(strsql,conn);
DataSet ds=new DataSet();
sda.Fill(ds,"user");
ddl.DataSource=ds.Tables["user"].DefaultView;
ddl.DataTextFieled="username";
ddl.DataBind();
}
catch(SqlException ex)
{
}
finally
{
conn.Close();
}
ViewState["state"]=true;
}
}
2)利用Panel实现动态DataGrid
private void ShowData()
{
Panel pl=new Panel();
pl.Style["Top"]="30px";
.......//设置panel的属性
this.Controls.Add(pl);//添加到页面上
DataGrid dg=new DataGrid();
BoundColumn bc=new BoundColumn();
bc.DataField="username";
bc.HeaderText="姓名";
dg.Controls.Add(bc);
dg.Style["Left"]=400px;
......//设置dg的样式
pl.Controls.Add(dg);
string strconn=ConfigurationSettings["strconn"];
string strsql="select username from user";
SqlConnection conn=new SqlConnection["conn"];
SqlCommand cmd=conn.CreateCommand();
try
{
conn.Open();
cmd.CommandText ="select username from user";
SqlDataReader dr=cmd.ExecuteReader();
dg.DataSource=dr;
dg.DataBind();
}
catch
{
dr.Close();
conn.Open();
}
}
3)文本框的动态增加和删除
//类TextBoxArray
//加载页面的时候初始化 Session["count"]
public class TextBoxArray:System.Collections.CollectionBase
{
private readonly Control hostpage;
public TextBoxArray(Control hostpage)
{
this.hostpage=hostpage;
}
//增加文本框
public void AddTextBox()
{
TextBox tb=new TextBox();
this.List.Add(tb);//添加到集合列表
hostpage.Controls.Add(tb);//将tb添加到窗体的集合列表
tb.ID=this.Count.ToString();
tb.Style["left"]=120px;
......//设置样式
}
//创建索引
public TextBox this[int index]
{
get
{
return (TextBox)this.List[index];
}
}
public void RemoveTextBox()
{
if(this.count>0)
{
hostpage.Controls.remove(this[this.count-1]);
this.List.RemoveAt(this.count-1);
}
}
}
//显示控件
private void ShowControl(Panel pl)
{
textboxarray tba=new TextBoxArray();
int count=(int)Session["count"];
pl.Controls.Clear();
for(int i=0 ; i<=count;i++)
{
tba.addNewTextBox();
}
}
//调用的方法
private void Add()
{
Session["count"]=(int)Session["count"]+1;
ShowControl();
}
private void Del()
{
Session["count"]=(int)Session["count"]-1;
ShowControl();
}
5 动态添加的控件的事件
private void AddButton(PlaceHolder ph)
{
Button bt1=new Button();
bt1.CommandArgument="bt1";
bt1.Command+=new CommandEventHandler(this.OnButton);
ph.Controls.Add(bt1);
}
private void OnButton(object sender,CommandEventArgs e)
{
switch(e.CommandArgument.ToString().ToLower())
{
case "bt1":
//方法.....
break;
};
}
6 动态添加JS
private void AddJS(Button btn)
{
btn.Attibutes["onclick"]="javascript:alert('OK');";
}