日期:2014-05-19  浏览次数:20380 次

服务器端实现动态添加、删除控件,并且能保存,下次还可再编辑,这样如何实现??
动态添加的部分我已经做好了,是服务器端完成的,还差动态删除部分,看了很多帖子,还是没想法。
要求是这样的:一个添加信息页,能动态添加控件(TextBox),删除控件,页面所有信息都要保存。并且,再下次编辑的时候同样有这样的效果。
遇到的困难是:即使我能动态添加上了删除按钮,如何控制删除我所指定的TextBox。
我的部分代码:

public   int   iAddCount
{
    get
    {
                return   ViewState[ "Counts "]!=null?(int)ViewState[ "Counts "]:0;
    }
    set
    {
ViewState[ "Counts "]=value;
    }
}

public   void   AddControls(int   i)
{
TextBox   t=new   TextBox();
t.ID= "TextBox "+i.ToString();
this.Pnl.Controls.Add(t);
}

private   void   btnAddCtl_Click(object   sender,   System.EventArgs   e)
{
TextBox   t=new   TextBox();
t.ID= "TextBox "+Convert.ToString(this.Pnl.Controls.Count+1);
this.Pnl.Controls.Add(t);

iAddCount=this.Pnl.Controls.Count;
}
                     
private   void   btnSave(object   sender,EventArgs   e)
{
                ......
                #region   保存电影地址

......

foreach(Control   o   in   this.Pnl.Controls)
{
if(o.GetType()==typeof(TextBox))
{
ObjVodUrlTB   vod=new   ObjVodUrlTB();
vod.NewsID=NewsID;
vod.MovieUrl=((TextBox)o).Text.Trim();
vod.Save();
}
}

                #endregion
}

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

//动态添加的控件
for(int   i=1;i <=this.iAddCount;i++)
{
this.AddControls(i);
}
}


------解决方案--------------------
你为什么不把你的动态生成的控件放在DataList里面呢?这样的话就可以通过点选来实现;
还有一种办法就是你在生成TextBox的时候就后面也生成删除按钮;
------解决方案--------------------
动态添加控件有关的问题,请参考我的系列文章:
http://www.cnblogs.com/cathsfz/category/76686.html