VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 668|回复: 8

如何动态添加和删除用户控件及初始化的问题,谢谢

[复制链接]

1

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-3-19 19:30:02 | 显示全部楼层 |阅读模式
index.aspx页面中有btn_add和btn_dll两个按钮
要求是点击btn_add的时候给index.aspx页添加一个news.ascx控件
继续点击继续添加news.ascx控件到index.aspx
点击btn_dll的时候删除最后添加的news.ascs控件,再点击再删除最后添加的那个

谢谢
回复

使用道具 举报

0

主题

322

帖子

115.00

积分

新手上路

Rank: 1

积分
115.00
发表于 2020-6-25 10:00:01 | 显示全部楼层
private int ControlsCount
                {
                        get
                        {
                                return ViewState["ControlsCount"] == null?0:(int)ViewState["ControlsCount"];
                        }

                        set
                        {
                                ViewState["ControlsCount"] = value;
                        }
                }

private void Button1_Click(object sender, System.EventArgs e)
                {
                        UserControl c = (UserControl) this.LoadControl("MyControls.ascx");
                        this.Panel1.Controls.Add(c);
                        this.ControlsCount ++;
                }

                private void Button2_Click(object sender, System.EventArgs e)
                {
                        if(this.Panel1.Controls.Count >0)
                        {
                                this.Panel1.Controls.RemoveAt(this.Panel1.Controls.Count-1);
                                this.ControlsCount --;
                        }
                }

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

                        for(int i=0;i<this.ControlsCount;i++)
                        {
                                UserControl c = (UserControl) this.LoadControl("MyControls.ascx");
                                this.Panel1.Controls.Add(c);
                        }
               

        }
回复

使用道具 举报

0

主题

322

帖子

115.00

积分

新手上路

Rank: 1

积分
115.00
发表于 2020-6-25 10:30:02 | 显示全部楼层
Button1 对应btn_add
2 对应 btn_dll
回复

使用道具 举报

1

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-6-25 22:45:01 | 显示全部楼层
有问题啊:
我说说的我环境:
我的productadd.aspx页面里面有一个add.ascx用户控件
用户控件用来添加商品
但现在用户要求一次性可以添加多个商品,所以我想用动态加载这个add.ascx来添加多个商品
我用了你上面的代码后:在添加add.ascx的时候当执行add.ascx里面的load中的if(!ispostback)
虽然add.ascx是首次加载但productadd.aspx不是首次加载所以不会执行里面的代码
也就无法初始化我的add.ascx里面的内容
回复

使用道具 举报

1

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-6-26 11:30:01 | 显示全部楼层
如:
aspx
<asp:Button id="Button1" runat="server" Text="Button"></asp:Button>
                        <asp:Button id="Button2" runat="server" Text="Button"></asp:Button>
                        <asp:Panel id="Panel1" runat="server"></asp:Panel>
ascx:
<asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
ascx.cs:
if(!IsPostBack)
{
  TextBox1.Text="dd";
}
就是ascx.cs初始化的时候不会指行  TextBox1.Text="dd";无法给添加的ascx初始内容
谢谢
回复

使用道具 举报

0

主题

322

帖子

115.00

积分

新手上路

Rank: 1

积分
115.00
发表于 2020-6-27 12:15:02 | 显示全部楼层
在用户控件中.

public bool bFirst = false; //这个变量是不保存状态的

ascx.cs:
的load中

if(bFirst)
{
   TextBox1.Text="dd"; //dd是数据库读出
}


然后在btn_add的事件中.

MyControls c = (MyControls) this.LoadControl("MyControls.ascx");
                        c.bFirst = true;
                        this.Panel1.Controls.Add(c);

注意顺序.c.bFirst= true 一定要话 下一句前面.
回复

使用道具 举报

1

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-6-27 17:15:01 | 显示全部楼层
现在是无法初始化用户控件 我的本意是 我说说的我环境: 我的productadd.aspx页面里面有一个add.ascx用户控件 用户控件用来添加商品 但现在用户要求一次性可以添加多个商品,所以我想用动态加载这个add.ascx来添加多个商品 我用了你上面的代码后:在添加add.ascx的时候当执行add.ascx里面的load中的if(!ispostback) 虽然add.ascx是首次加载但productadd.aspx不是首次加载所以不会执行里面的代码 也就无法初始化我的add.ascx里面的内容 如下面代码 ascx: <asp:TextBox id="TextBox1" runat="server"></asp:TextBox> <asp:Button id="Button1" runat="server" Text="Button"></asp:Button> ascx.cs: load() { if(!IsPostBack) { TextBox1.Text="dd"; //dd是数据库读出 } } btn_click() { 更新到数据库 } 谢谢
回复

使用道具 举报

1

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-6-28 07:45:01 | 显示全部楼层
c.bFirst = true;
这里出错没有bFirst
回复

使用道具 举报

1

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
 楼主| 发表于 2020-6-28 10:00:01 | 显示全部楼层
((myuc)c).bFirst=true;
OK了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表