使用动态创建的按钮的事件来重定向到另一个页面

本文关键字:重定向 另一个 事件 动态 创建 按钮 | 更新日期: 2023-09-27 17:50:50

我试图调用动态创建的按钮发送参数的事件,但是当我点击什么都没有发生,只是Post Back页面。

public void adicionarComanda()
    {
        List<Comanda> lc = ControllerComanda.getComanda();
        foreach (Comanda comanda in lc)
        {
            Button bt = new Button();
            bt.Text = comanda.nome_Pessoa;
            bt.CssClass = "botoes";
            bt.Click += btnNome1_Click;
            bt.CommandArgument = comanda.nome_Pessoa;              
            HtmlGenericControl li = new HtmlGenericControl("li");
            li.Controls.Add(bt);
            ulBotoes.Controls.Add(li);
        }
    }

和事件

protected void btnNome1_Click(object sender, EventArgs e)
    {
        string nomePessoa = (sender as Button).CommandArgument;
        Session["currentUser"] = nomePessoa.ToString();
        Response.Redirect("~/Mobile/Pages/produtosCategoria.aspx");
    } 

但是当我点击按钮时什么也没有发生,只是PostBack页面。我该如何解决这个问题?

谢谢大家

使用动态创建的按钮的事件来重定向到另一个页面

您需要在每次回发时重新呈现所有动态生成的控件。我建议创建一个方法来生成这些控件,然后在Page_Load中的每次回发时调用该方法。

您是否考虑过将"currentuser"作为参数传递?bt.Attributes。添加("onclick"、"javascript:重定向(~/移动/页面/produtosCategoria.aspx ?的名字= comanda.nome_Pessoa ')";

您可以使用另一种方法- PostBackUrl

public void adicionarComanda()
{
    List<Comanda> lc = ControllerComanda.getComanda();
    foreach (Comanda comanda in lc)
    {
        Button bt = new Button();
        bt.Text = comanda.nome_Pessoa;
        bt.CssClass = "botoes";
        bt.PostBackUrl = String.Format("~/Mobile/Pages/produtosCategoria.aspx?user={0}", comanda.nome_Pessoa);           
        HtmlGenericControl li = new HtmlGenericControl("li");
        li.Controls.Add(bt);
        ulBotoes.Controls.Add(li);
    }
}

然后在重定向页面中,您可以使用Request.QueryString["user"],并根据需要使用