请问对于动态生成的Label控件怎么来控制啊
比如说我动态生成了Label1,Label2,Label3
但是,我想调用他们的时候该怎么调用啊。
本来是可以aa=Label1.Text
可是现在该怎么来调用啊,?急在线等~~~~~~`

解决方案 »

  1.   

    请问LZ是怎么动态生成的,又是怎么想怎么样调用的?也许这样能够帮助LZ理解:Page_load(object sender, EventArgs e) 
    {
    Label lbl1 = new Label() // 实例化一个label
    lbl1.Text = "some text";Page.Controls.Add(lbl1); // 将此动态生成的label 加入页面中,注意这里是追加到页面所有Web空件的尾部//也许LZ想将此Label加到某个空件里面,比如Panel,作为其子空件,那么如下:
    /*
    * myPanel.Controls.Add(lbl1); // myPanel 已经存在的空件,可以是你在前台 .aspx 页面声明的,当然也可以想 这里 的 lbl1 一样动态的创建,然后追加到某个父空件里面
    */// 好了现在你可以引用刚才创建的 lbl1 了
    TextBox txt = new TextBox(); // 这里是动态创建的一个TextBox
    txt.Text = lbl1.Text;
    Controls.Add(txt); // 将动态创建的TextBox加入页面中
    }
      

  2.   

    需要说明的是,这种动态创建 WebControl 通常意义不大,而且黑麻烦,特别是在空件的定位上和页面的的回发处理上很难以控制,你需要对ASP.NET 页面生命周期以及视图管理非常的了解,才能处理好。原来 asp.net 官方网提供了一个叫 Asp.net Potal 的企业实例(基于asp.net 1.x),就是使用动态加载 UserControl,注意他只是动态加载 UserControl,就是动态将 UC加载到页面的指定位置上,但是这些 UserControl 都已经是预先就建好的了,已经又.ascx存在了,
      

  3.   

    也许LZ应该说明你的具体需求,或许有更好的解决方式,友情提示:Web 编程与桌面编程 非常的不同 ^_^
      

  4.   

    是这样,
    foreach(ListItem checkbox in this.CheckBoxList1.Items) 
    {

    if(checkbox.Selected)
    {
    Label lbl = new Label();
    lbl.Text = checkbox.Text;
    lbl.ID = "s" + (index).ToString();
    index++;
    Panel1.Controls.Add(lbl);
    }

    }
    这样就动态的生成了几个lable s1,s2,s3
    我现在想做的是,让另外一个我自己设定的Label1=s1.Text+s2.Text+s3.Text.就这样
      

  5.   

    Label a=(Label)Panel1.FindControl("s1");
    Label b=(Label)Panel1.FindControl("s2");
    Label c=(Label)Panel1.FindControl("s3");
    Label label1=a.Text+b.Text+c.Text;
      

  6.   

    给每个Label都设置ID属性,根据ID用上面的方法访问控件
      

  7.   

    shw586(老枪) 的代码应该可以吧
      

  8.   

    Label a=(Label)Panel1.FindControl("s1");
    Label b=(Label)Panel1.FindControl("s2");
    Label c=(Label)Panel1.FindControl("s3");
    Label label1=a.Text+b.Text+c.Text;
    未将对象引用设置到对象的实例。
      

  9.   

    你得确定你是否真的生成上面的三个Label,我给你的只是一个例子,你要根据你自己的代码再作调整,最主要的是说明可以用FindControl("ControlID")得到控件的句柄。
      

  10.   

    对了,上面的代码有点失误。最后应该是:
    Label Label1=new Label();Label1.Text=a.Text+b.Text+c.Text;
      

  11.   

    我写了一个例子,可以执行的,你看看<%@ Page Language="C#" %>
    <script runat="server">    // Insert page code here
        //
        
        void Button1_Click(object sender, EventArgs e) {
        int index=0;
        
        foreach(ListItem checkbox in this.CheckBoxList1.Items)
        {
        
        if(checkbox.Selected)
        {
        Label lbl = new Label();
        lbl.Text = checkbox.Text;
        lbl.ID = "s" + (index++).ToString();
        index++;
        Panel1.Controls.Add(lbl);
        
        }
        
        }
        
        }</script>
    <html>
    <head>
    </head>
    <body>
        <form runat="server">
            <p>
                <asp:CheckBoxList id="CheckBoxList1" runat="server" Width="180px" Height="103px">
                    <asp:ListItem>11</asp:ListItem>
                    <asp:ListItem>22</asp:ListItem>
                    <asp:ListItem>33</asp:ListItem>
                </asp:CheckBoxList>
            </p>
            <p>
                <asp:Panel id="Panel1" runat="server" Width="125px" Height="50px"></asp:Panel>
            </p>
            <p>
                <asp:Button id="Button1" onclick="Button1_Click" runat="server" Text="Button"></asp:Button>
            </p>
            <!-- Insert content here -->
        </form>
    </body>
    </html>
      

  12.   

    没有贴对,下面的才是:<%@ Page Language="C#" %>
    <script runat="server">    // Insert page code here
        //
        
        void Button1_Click(object sender, EventArgs e) {
        int index=0;
        
        foreach(ListItem checkbox in this.CheckBoxList1.Items)
        {
        
        if(checkbox.Selected)
        {
        Label lbl = new Label();
        lbl.Text = checkbox.Text;
        lbl.ID = "s" + (index++).ToString();
        index++;
        Panel1.Controls.Add(lbl);
        
        }
        
        }
        
        
        Label s22=(Label)Panel1.FindControl("s2");
        
        
        this.Label1.Text=s22.Text;
        
        }</script>
    <html>
    <head>
    </head>
    <body>
        <form runat="server">
            <p>
                <asp:CheckBoxList id="CheckBoxList1" runat="server" Width="180px" Height="103px">
                    <asp:ListItem>11</asp:ListItem>
                    <asp:ListItem>22</asp:ListItem>
                    <asp:ListItem>33</asp:ListItem>
                </asp:CheckBoxList>
            </p>
            <p>
                <asp:Panel id="Panel1" runat="server" Width="125px" Height="50px"></asp:Panel>
            </p>
            <p>
                <asp:Label id="Label1" runat="server" text="Label"></asp:Label>
            </p>
            <p>
                <asp:Button id="Button1" onclick="Button1_Click" runat="server" Text="Button"></asp:Button>
            </p>
            <!-- Insert content here -->
        </form>
    </body>
    </html>
    出现未将未将对象引用设置到对象的实例是因为有的控件根本就没有生成(即没有Checked的项就没有对应的Label,你引用当然就出错了),只要用null判断一下就可以了
      

  13.   

    Label a=(Label)Panel1.FindControl("s1");
    Label b=(Label)Panel1.FindControl("s2");
    Label c=(Label)Panel1.FindControl("s3");
    Label label1=a.Text+b.Text+c.Text;
    未将对象引用设置到对象的实例。
    断点看下是不是Find不到,如果是的话就是没有生成控件,
    有可能是你将动态生成控件的代码写在(!Page.IsPostBack)里面了,而你取值又是在PostBack时
    还有就是Label label1=a.Text+b.Text+c.Text;这个好像不对,
    左边是Control右边是String如果附值
      

  14.   

    Jinglecat(晓风残月) ( ) 信誉:94    Blog  2006-9-27 23:29:20  得分: 0  
     
     
        
    =======================
    重庆人或四川人,活活^_^