在C#ASP.NET中动态分配按钮事件 - c#

您能告诉我以下代码有什么问题吗?

        Panel div = new Panel();
        Button btn1 = new Button { Text = "Delete", CommandArgument = "argument", ID = "remove" };
        Button btn2 = new Button { Text = "Insert", CommandArgument = "argument2", ID = "insert" };

        btn1.Click += new EventHandler(btn_click);
        btn2.Click += new EventHandler(btn_click);

        div.Controls.Add(btn1);
        div.Controls.Add(btn2);

        ph_plan.Controls.Add(div); // where ph_plan is a placeholder in the user control

protected void btn_click(object sender, EventArgs e)
{
    Button btn = (Button)sender;
    if(btn.ID == "remove")
        // do this
    else 
        // do that
}

上面的代码在用户表单中的按钮上单击后立即发生。它应该创建2个分配了事件的新按钮。确实,它创建了按钮,但是当我单击它们时,什么也没有发生。我猜事件无法注册。我在这里做错了什么?

参考方案

发生这种情况的原因是,Page是无状态类,一旦呈现了所有内容,它就会被销毁。因此,一旦进行回发,该信息就会丢失,并且您的Page类不了解按钮的事件,因为动态按钮不是aspx文件的一部分。

您需要维护可能在会话中创建的动态控件的集合,以便可以在回发之后重新创建它们。有一个it here的示例。

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

改造正在返回一个空的响应主体 - java

我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…

每个文件合并后添加换行 - python

我有很多类似以下内容的JSON文件:例如。1.json{"name": "one", "description": "testDescription...", "comment": ""} test.json{"name"…

从onchange触发.click()时,IE9上出现“ SCRIPT5访问被拒绝”错误 - c#

我们希望减少用户在我们的网站上上传文件所需的步骤;因此,我们使用jQuery通过以下标记(简化)打开和回发文件:<a onclick="$('#uplRegistrationImage').click();"> Change profile picture </a> <!-- Hidden…

您如何在列表内部调用一个字符串位置? - python

我一直在做迷宫游戏。我首先决定制作一个迷你教程。游戏开发才刚刚开始,现在我正在尝试使其向上发展。我正在尝试更改PlayerAre变量,但是它不起作用。我试过放在列表内和列表外。maze = ["o","*","*","*","*","*",…