动态添加删除自定义控件的问题!!!各位高手帮忙!
大家动态添加的自定义控件 需要有视图状态,不然获取不到控件的值! 先看我的代码
protected void Page_Load(object sender, EventArgs e)
{
for (int i = 0; i < 5; i++)
{
string kjid = "MyControl" + i.ToString();
Control a = Page.LoadControl("WebUserControl.ascx");
a.ID = kjid;
if (ViewState[kjid] != null)
{
PlaceHolder1.Controls.Add(a);
}
}
}
下面是动态添加:
protected void Button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 5; i++)
{
string kjid = "MyControl" + i.ToString();
Control a = Page.LoadControl("WebUserControl.ascx");
a.ID = kjid;
if (ViewState[kjid] == null)
{
PlaceHolder1.Controls.Add(a);
ViewState[kjid] = true;
break;
}
}
}
下面是动态添加的控件全部删除
protected void Button2_Click(object sender, EventArgs e)
{
PlaceHolder1.Controls.Clear();
for (int i = 0; i < 5; i++)
{
string kjid = "MyControl" + i.ToString();
if (ViewState[kjid] != null)
{
ViewState[kjid] = null;
}
}
}
以上代码全部通过 没有错误.功能实现正常!
我的问题是 动态添加的控件 如何单个删除 ?
我在控件中写了:
protected void Button2_Click(object sender, EventArgs e)
{
Page.FindControl("PlaceHolder1").Controls.Remove(this);
ViewState[this.ID] = null;
}
控件是可以删除 但是删不了 ViewState中的状态!!
如何才能实现单个删除. !! 其实只要清除掉 控件自身的ViewState就可以了。 不知道怎么些这个!!! 在控件中写
ViewState[this.ID] = null;
是不能删除的!!希望高手指点!!!在线等
------解决方案--------------------if(!Page.IsPostBack)
{
for (int i = 0; i < 5; i++)
{
string kjid = "MyControl" + i.ToString();
Control a = Page.LoadControl("WebUserControl.ascx");
a.ID = kjid;
if (ViewState[kjid] != null)
{
PlaceHolder1.Controls.Add(a);
}
}
}
------解决方案--------------------viewstate是在控件的属性块里写的.
------解决方案--------------------先加上ispostback试试,然后还有就是viewstate应该在控件的属性块里面写吧?????
------解决方案--------------------删除按钮
C# code
if(panel1.Controls.Contains(button2))
{
panel1.Controls.Remove(button2);
}