如何在按钮单击事件上创建动态按钮(C Sharp ASP.NET)?

发布于 2024-09-29 12:24:36 字数 138 浏览 1 评论 0原文

我想在按钮单击事件上创建动态按钮(例如,btnCreateDynamic_Click)。 我尝试在 page_load 事件和 Pre_int 事件上创建动态按钮。它们都正常工作,但我想在按钮单击事件中创建它们。我怎样才能在 c# asp.net 中做到这一点?

I want to create dynamic buttons on button click event(for example., btnCreateDynamic_Click).
I tried creating dynamic buttons on page_load event and Pre_int event.They are all working but i want to create them in button click event. How can i do this in c# asp.net?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

栖迟 2024-10-06 12:24:37

您在客户端的按钮单击事件将导致页面回发,从而启动 ASP.Net 页面生命周期;
alt text

服务器上的按钮单击事件是 PostBackEvent,您应该能够使用相同的方法调用 您在 Load 或 Init 事件中使用的 CreateMyButton()

Your button click event at the client will cause a page postback that will start the ASP.Net Page Life-cycle;
alt text

Your button click event on the server is a PostBackEvent and you should be able to use the same method call CreateMyButton() that you used in the Load or Init events.

尾戒 2024-10-06 12:24:37

一个想法是创建一个按钮列表,在其中存储在 btnCreateDynamic_click 中创建的按钮。

您可以有这样的方法:

private Button CreateButton(string id, string name)
        {
            Button b = new Button();
            b.Text = name;
            b.ID = id;
            b.Click += new EventHandler(Button_Click);
            b.OnClientClick = "ButtonClick('" + b.ClientID + "')";
            return b;
        }

在 btnCreateDynamic_click 中,您可以有类似的方法:

Button b = CreateButton("dinamicBtn"+myDinamicButtonsList.Count.ToString(),"dinamicBtn"+myDinamicButtonsList.Count.ToString());
myDinamicButtonsList.add(b);

例如,在 pageLoad 中,您可以执行类似

foreach(button btn in myDinamicButtonsList){
    form1.Controls.Add(btn));
}

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

myDinamicButtonsList 的操作,应该将其存储在每次请求后可以检索的位置。

编辑
在页面加载中,您可能会遇到这样的情况:

if(Session["myDinamicButtons"] == null){
    List<Button> myDinamicButtonsList = new List<Button>();
    Session["myDinamicButtons"] = myDinamicButtonsList;
}

foreach(Button btn in Session["myDinamicButtons"] as List<Button>){
    form1.Controls.Add(btn));
}

我没有测试它,但它应该可以工作。

An idea would be to create a list of buttons in which you'd store the buttons you created in btnCreateDynamic_click.

you could have a method like:

private Button CreateButton(string id, string name)
        {
            Button b = new Button();
            b.Text = name;
            b.ID = id;
            b.Click += new EventHandler(Button_Click);
            b.OnClientClick = "ButtonClick('" + b.ClientID + "')";
            return b;
        }

in btnCreateDynamic_click you could have something like:

Button b = CreateButton("dinamicBtn"+myDinamicButtonsList.Count.ToString(),"dinamicBtn"+myDinamicButtonsList.Count.ToString());
myDinamicButtonsList.add(b);

and in the pageLoad for example you could do something like

foreach(button btn in myDinamicButtonsList){
    form1.Controls.Add(btn));
}

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

myDinamicButtonsList should be stored somewhere from where it could be retrieved after each request.

EDIT:
In page load you could have something like this:

if(Session["myDinamicButtons"] == null){
    List<Button> myDinamicButtonsList = new List<Button>();
    Session["myDinamicButtons"] = myDinamicButtonsList;
}

foreach(Button btn in Session["myDinamicButtons"] as List<Button>){
    form1.Controls.Add(btn));
}

i didn't tested it but it should work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文