• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 293
  • Last Modified:

Why my button doesn't do a postback?

Hi experts!
I've a Web User Control that contain a "Panel" inside this panel there is a button.The button have an event in the server side called Button1_Click.

Also I've a page, in which I am calling a Collapsible panel Extender from the server side.One of the properties of this Collapsible panel Extender is to have a TargetControlID, this TargetControlID need to be a "Panel".  I am targetting the "Panel" from my Web User Control. This work fine and show the panel...BUT

The button inside the panel have lost the event. The event Button_click is not trigerring at all....
WHY?????.....I am attaching my code with comments
Thanks

Ps: So far I have publish a question like this for 3 days and nobody have found an answer.....


This is the web user control .ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Exampletry.ascx.cs" Inherits="controls_Exampletry" %>
 
<asp:Panel ID="ContentPanelStep" runat="server">   // the panel which it is going to be the TargetID for the collapsiblePanel
 
   <asp:Button ID="Button1" runat="server" Text="Testing" OnClick="Button1_Click" />       //The button  is inside the Panel with an event, this button is the one that is triggering.
 
</asp:Panel>
 
This is the web user control ascx.cs:
public partial class controls_Exampletry : System.Web.UI.UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
 
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
              //This is the event that is not triggering
    }
 
    public Panel StepPanel
    {
        get { return ContentPanelStep; }  //this is my panel and inside this panel there is a button. I make it public so I can call it for the aspx. page
    }
}
 
 
This is my code in my page:
    protected void Page_Load(object sender, EventArgs e)
    {        
     controls_Exampletry myControl = (controls_Exampletry)Page.LoadControl("controls/Exampletry.ascx");  //Loading hte WebUserControl into am object called mycontrol
      myControl.ID= = "MyControl1"; //Seting and ID for this object
      HtmlTableRow stepRow = new HtmlTableRow();      //This is a dynamic Row
      HtmlTableCell stepCell = new HtmlTableCell();        //This is a dynamic Cell
     AjaxControlToolkit.CollapsiblePanelExtender cpe1 = new AjaxControlToolkit.CollapsiblePanelExtender();    //creating the Collapsible Panel from server side and give it an instance or object
     
     cpe1.ID = "CollapsiblePanelExtender";   // giving an ID to the Collapsible Panel
     cpe1.TargetControlID = myControl.StepPanel.UniqueID;
                     //This is the line that I think is the problem, I am callling the ID for the panel that is contained in the web  user control . I tried ClientID and it didn't work neither. I can see the panel with the button but the event from that button inside that panel is not triggering.  
        stepCell.Controls.Add(myControl);
        stepCell.Controls.Add(cpe1);
        stepRow.Cells.Add(stepCell);
        StepsTable.Rows.Add(stepRow);      //I have a table with ID=StepsTable that will received this adding of the row
    }

Open in new window

0
eddyperu
Asked:
eddyperu
  • 2
1 Solution
 
Refael AckermannCommented:
Can you move the code to the Page_Init event handler?
0
 
eddyperuAuthor Commented:
I did it ...and it didn't work neither :(
0
 
eddyperuAuthor Commented:
I found the answer I publish it here just in case someone else is looking for this:
        controls_Exampletry myControl = (controls_Exampletry)Page.LoadControl("controls/Exampletry.ascx");
        myControl.ID = "MyControl1";
        controls_NewHireWorkflowStepControl myHeaderControl = (controls_NewHireWorkflowStepControl)Page.LoadControl("controls/NewHireWorkflowStepControl.ascx");
        myHeaderControl.ID = "MyHeaderControl1";


        Page.Controls.Add(myControl);
        AjaxControlToolkit.CollapsiblePanelExtender cpe1 = new AjaxControlToolkit.CollapsiblePanelExtender();
        cpe1.ID = "myCollapsiblePanelExtender";
        // cpe1.TargetControlID = Page.FindControl(myControl.ID).StepPanel.ID;
        cpe1.TargetControlID = myControl.StepPanel.UniqueID;
        cpe1.ExpandControlID = myHeaderControl.StepHeaderPanel.UniqueID;
        cpe1.CollapseControlID = myHeaderControl.StepHeaderPanel.UniqueID;
        cpe1.BehaviorID = "CPEBehavior";
        cpe1.Collapsed = true;
        cpe1.AutoCollapse = false;
        cpe1.AutoExpand = false;
        cpe1.ScrollContents = false;
        cpe1.ExpandDirection = AjaxControlToolkit.CollapsiblePanelExpandDirection.Vertical;



        Page.Controls.Add(cpe1);

        HtmlTableRow stepRow = new HtmlTableRow();
        HtmlTableCell stepCell = new HtmlTableCell();
        stepCell.Controls.Add(myHeaderControl);
        stepCell.Controls.Add(myControl);
        stepCell.Controls.Add(cpe1);
        stepRow.Cells.Add(stepCell);
        StepsTable.Rows.Add(stepRow);
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now