Event click has no function

2

I have created dynamic buttons and I have assigned them a click event but when clicking them, they do not enter the event

protected void Unnamed1_Click(object sender, EventArgs e)
    {
        ScriptManager.RegisterStartupScript(this, this.GetType(), "Pop", "showAndHide();", true);

        Button Btn_clic = (Button)sender;
        var name = Btn_clic.Text;

        List.ListUsers listArea = new List.ListUsers();
        List<Data.Area> Area = listArea.AreaList();

        List<Data.Area> ListOfEquiposOk = Area.Where(x => x.AREA == name && x.STANDBY == 0).ToList();

        List<Button> Botones = new List<Button>();

        var TeamFCH = ListOfEquiposOk.Select(x => x.TEAM).Distinct().ToList();

        foreach (var team in TeamFCH)
        {
            Button newButton = new Button();
            newButton.CommandName = "Btn" + Convert.ToString(team);
            newButton.ID = "Btn_" + Convert.ToString(team);
            newButton.Text = team;

            newButton.Click += Info_Click;

            newButton.OnClientClick = "return ModalGood();";
            Botones.Add(newButton);

            GoodPanel.Controls.Add(newButton);
            newButton.CssClass = "btn-primary outline separate";
        }
    }
protected void Info_Click(object sender, EventArgs e)
        {
            Button Btnclick = (Button)sender;
            var team = Btnclick.Text;

            List.ListUsers listArea = new List.ListUsers();
            List<Data.Area> Area = listArea.AreaList();

            List<Data.Area> ListOfToolsOk = Area.Where(x => x.AREA == "ENG" && x.TEAM == "516" && x.STANDBY == 0).ToList();

            var ToolArea = ListOfToolsOk.Select(x => x.TEAM);
            Grv_Eng.DataSource = ListOfToolsOk;
            Grv_Eng.DataBind();
        }

I have placed breakpoints and it does not fit in, I manually put a button to verify that my event was good and in fact it is ok ...

    
asked by Cesar Gutierrez Davalos 30.06.2017 в 22:29
source

1 answer

0

I imagine that the dynamic loading of buttons is doing in the event Load of the page, if this is correct you must pass your code for the event Init to be able to work:

protected void Page_Init(object sender, EventArgs e)     
{      
    foreach (var team in TeamFCH)
    {
        Button newButton = new Button();
        newButton.CommandName = "Btn" + Convert.ToString(team);
        newButton.ID = "Btn_" + Convert.ToString(team);
        newButton.Text = team;
        newButton.Click += Info_Click;

        //newButton.OnClientClick = "return ModalGood();";
        Botones.Add(newButton);

        GoodPanel.Controls.Add(newButton);
        newButton.CssClass = "btn-primary outline separate";
    }   
}
  

Update the response

I made this example for you to rehearse within your project

HTML inside the .aspx page

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>    
            <asp:Button ID="Unnamed1" runat="server" OnClick="Unnamed1_Click" Text="Area" />
            <asp:Panel ID="GoodPanel" runat="server">
            </asp:Panel>    
        </div>
    </form>
</body>
</html>

Codebehind

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
        Session["Btn_clic"] = null;

    if (Session["Btn_clic"] == null)
        return;

    Button Btn_clic = Session["Btn_clic"] as Button;        
    if (Btn_clic.ID == Unnamed1.ID)
        CrearBotones(Btn_clic.Text);        
}

protected void Unnamed1_Click(object sender, EventArgs e)
{
    Button btn = sender as Button;
    Session["Btn_clic"] = btn;
    CrearBotones(btn.Text);
}

protected void Info_Click(object sender, EventArgs e)
{
    (sender as Button).Text = (sender as Button).ID;
}

private void CrearBotones(string area)
{
    //TODO: acá implementas tú otra parte del código

    var TeamFCH = new string[] { "TEAM1", "TEAM2", "TEAM3", "TEAM4" };
    foreach (var team in TeamFCH)
    {
        Button newButton = new Button();
        newButton.CommandName = "Btn" + Convert.ToString(team);
        newButton.ID = "Btn_" + Convert.ToString(team);
        newButton.Text = team;
        newButton.Click += Info_Click;
        GoodPanel.Controls.Add(newButton);
        newButton.CssClass = "btn-primary outline separate";
    }
}
    
answered by 30.06.2017 в 23:18