Click here to Skip to main content
15,915,702 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
usercontrol.ascx.cs
--------------------------
C#
namespace UserControlDemo
{
    public partial class WebUserControl1 : System.Web.UI.UserControl
    {
        private string LabelText = string.Empty;
        protected void Page_Load(object sender, EventArgs e)
        {
           }
        public string AllNames
        {
            get
            {
                string RetVal = string.Empty;
                if (this.lblUserControl != null)
                {
                    RetVal = this.lblUserControl.Text;
                }
                
                return RetVal;
            }
            set
            {
                lblUserControl.Text = value;
            }
        }          
      
usercontrol.aspx
----------------------
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs"
    Inherits="UserControlDemo.WebUserControl1" %>
<asp:Table runat="server">
    <asp:TableRow runat="server">
        <asp:TableCell runat="server">
            <asp:Label ID="lblUserControl" runat="server" Text="Label" >
            <asp:Button ID="Button1" runat="server" Text="X" ForeColor="Maroon" 
                Height="20px" onclick="Button1_Click"/>
               <%-- <div id="ControlHolder"  runat="server">--%>
        
    

  

webform1.cs
----------------------
namespace UserControlDemo
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        WebUserControl1 wb = new WebUserControl1();
        protected void Page_PreInit(object sender, EventArgs e)
        {
           
            wb.button_Click +=new EventHandler(wb_button_Click);
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            
        }

       
        protected void chkList_SelectedIndexChanged(object sender, EventArgs e)
        {
            for (int i = 0; i < chkList.Items.Count; i++)
            {
                if (chkList.Items[i].Selected)
                {
                    WebUserControl1 user1 = null;
                    //user1 = (WebUserControl1)LoadControl(user1.GetType(), null);

                    user1 = (WebUserControl1)LoadControl("WebUserControl1.ascx");
                    user1.AllNames = chkList.Items[i].Text;
                    div1.Controls.Add(user1);

                }
                
            }
        }
         
        protected void button_Click(object sender, EventArgs e)
        {
            wb.button_Click +=new EventHandler(wb_button_Click);
        }
        protected void wb_button_Click(object sender, EventArgs e)
        {
            div1.Controls.Remove(wb);
        }
             
    }
}

webform.aspx
--------------------
<html xmlns="http://www.w3.org/1999/xhtml">
<head  runat="server">
    <title></title>
</head>
<body>
    <form id="form1"  runat="server">
    <div id="div1"  runat="server">
    

    <div>
        <asp:CheckBoxList ID="chkList" runat="server"  
            onselectedindexchanged="chkList_SelectedIndexChanged" AutoPostBack="True">
            <asp:ListItem>Name1
            <asp:ListItem>Name2
            <asp:ListItem>Name3
            <asp:ListItem>Name4
        
    </div>
    <form>
</body>
</html>


Here user control with a label and button is being added but on click of close button all controls are getting closed but i want only that control to be closed...can anyone please help??/
Posted

On every post back all the controls you have added dynamically get lost. You need to add them again on every post back if you want them rendered again. I think this is the case here.
 
Share this answer
 
Comments
Ramya Nagendra 31-May-13 1:52am    
Thanks Mahesh Bailwal, but i want to access the properties of the usercontrol that cause the postback. How can I do that??
Mahesh Bailwal 31-May-13 3:13am    
Take a look at solution 2
Below I have created sample code for you. In this example I have loaded user control in every post back, same thing you have to do.

User Control Code
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="WebApplication3.WebUserControl1" %>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1"
    runat="server" Text="Button" onclick="Button1_Click" /> 


public partial class WebUserControl1 : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            Response.Write(TextBox1.Text);
        }
    }


Web Page code

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Ajax.aspx.cs" Inherits="WebApplication3.Ajax" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <div id="divControlHolder" runat="server">
        </div>
    </div>
    </form>

    <script>
 
    </script>

</body>
</html>


public partial class Ajax : System.Web.UI.Page
 {
     public string message;
     protected void Page_Load(object sender, EventArgs e)
     {
             LoadControl();
     }

     private void LoadControl()
     {

         WebUserControl1 user1 = null;
         //user1 = (WebUserControl1)LoadControl(user1.GetType(), null);

         for (int i = 0; i < 10; i++)
         {
             user1 = (WebUserControl1)LoadControl("WebUserControl1.ascx");

             divControlHolder.Controls.Add(user1);

         }
     }
 }
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900