0

我对这篇文章 [1] 有一些疑问:如何在动态按钮上创建动态按钮点击事件?

该解决方案对我不起作用,我动态创建了一个按钮,该按钮位于 asp:table 控制器中。

我尝试将动态元素保存在 Session 中,并将 Session 值分配给 Page_Load 中的对象,但这不起作用。

一些想法

编辑:

        ...
        Button button = new Button();
        button.ID = "BtnTag";
        button.Text = "Tag generieren";
        button.Click += button_TagGenerieren;

        tabellenZelle.Controls.Add(button);
        Session["table"] = table;
    }

    public void button_TagGenerieren(object sender, EventArgs e)
    {
        TableRowCollection tabellenZeilen = qvTabelle.Rows;
        for (int i = 0; i < tabellenZeilen.Count; i++)
        {
            ...
        }
    }

  protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {

            if (Session["table"] != null)
            {
                table = (Table) Session["table"];
                Session["table"] = null;
             }
        }
    }
4

3 回答 3

1

将每个控件存储到 Session 状态不是一个好习惯。

我发现的唯一问题是当页面回发到服务器时,您需要重新加载具有相同 ID 的控件。否则,这些控件将为空。

<asp:PlaceHolder runat="server" ID="PlaceHolder1" />
<asp:Label runat="server" ID="Label1"/>

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

private void LoadControls()
{
    var button = new Button {ID = "BtnTag", Text = "Tag generieren"};
    button.Click += button_Click;
    PlaceHolder1.Controls.Add(button);
}

private void button_Click(object sender, EventArgs e)
{
    Label1.Text = "BtnTag button is clicked";
}

注意:如果您不知道按钮的 ID(在运行时动态生成),您希望ViewState像这样保存这些 ID - https://stackoverflow.com/a/14449305/296861

于 2013-05-15T14:55:25.040 回答
0

在页面加载中创建按钮

            Button btn = new Button();
            btn.Text = "Dynamic";
            btn.Click += new EventHandler(btnClick);
            PlaceHolder1.Controls.Add(btn)

按钮点击事件

protected void btnClick(object sender, EventArgs e)
{
  // Coding to click event
}
于 2014-02-13T10:26:18.487 回答
0

问题在于在页面生命周期中创建按钮及其事件的那一刻。为此尝试 page_init 事件。

于 2013-05-15T14:23:56.060 回答