C#   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c# – 如何使用EventHandler动态创建/删除ASP.NET页面的控件?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的一个项目中,我需要构建一个ASP.NET页面,并且需要动态创建一些控件.这些控件由代码隐藏类添加页面中,并且它们添加了一些事件处理程序.在PostBACks上,这些事件处理程序与页面显示的控件有很大关系.简而言之,这对我不起作用,我似乎无法弄清楚这一点.

因此,由于我的项目非常复杂,我决定创建一个不起作用的简短示例,但是如果你可以调整它以使其工作,那将是很好的,然后我就能将你的解决方案应用到我的原始问题.

以下示例应在面板上动态创建三个按钮.按下其中一个按钮时,除了按下的按钮外,应动态重新创建所有按钮.换句话说,只需隐藏用户按下的按钮并显示另外两个按钮.

为了使您的解决方案有所帮助,您无法静态创建按钮,然后使用Visible属性(或以其他方式彻底更改示例) – 您必须在每个PostBACk上动态地重新创建所有按钮控件(不一定在事件处理程序然).这不是一个棘手的问题 – 我真的不知道该怎么做.非常感谢您的努力.这是我的简短例子:

从Default.aspx文件

<body>
    <form id="form1" runat="server">
    <div>
        <asp:Panel ID="ButtonsPanel" runat="server"></asp:Panel>
    </div>
    </form>
</body>

从Default.aspx.cs代码隐藏文件

using System;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace DynamicControls
{
    public partial class _Default : Page
    {
        protected void Page_Load(object sender,EventArgs E)
        {
            AddButtons();
        }

        protected void AddButtons()
        {
            var lastClick = (String) Session["ClickedButton"] ?? "";

            ButtonsPanel.Controls.Clear();
            if (!lastClick.Equals("1")) AddButtonControl("1");
            if (!lastClick.Equals("2")) AddButtonControl("2");
            if (!lastClick.Equals("3")) AddButtonControl("3");
        }

        protected void AddButtonControl(String id)
        {
            var button = new Button {Text = iD};
            button.Click += button_Click;
            ButtonsPanel.Controls.Add(button);
        }

        private void button_Click(object sender,EventArgs E)
        {
            Session["ClickedButton"] = ((Button) sender).Text;
            AddButtons();
        }
    }
}

我的示例显示了三个按钮,当我单击其中一个按钮时,按下的按钮将被隐藏.似乎工作;但是在第一次点击之后,我必须点击每个按钮TWICE才能隐藏它. !?

解决方法

我认为你必须在每次添加它们时为你的按钮提供相同的ID,例如(在AddButtonControl方法的第一行):

var button = new Button { Text = id,ID = id };

编辑 – 我的解决方案没有使用会话:

public partial class _Default : Page
{
    protected override void OnPreInit(EventArgs E)
    {
        base.onPreInit(E);
        AddButtons();
    }

    protected void AddButtons()
    {
        AddButtonControl("btn1","1");
        AddButtonControl("btn2","2");
        AddButtonControl("btn3","3");
    }

    protected void AddButtonControl(String id,String text)
    {
        var button = new Button { Text = text,ID = id };
        button.Click += button_Click;
        ButtonsPanel.Controls.Add(button);
    }

    private void button_Click(object sender,EventArgs E)
    {
        foreach (Control control in ButtonsPanel.Controls)
            control.Visible = !control.Equals(sender);
    }
}

大佬总结

以上是大佬教程为你收集整理的c# – 如何使用EventHandler动态创建/删除ASP.NET页面的控件?全部内容,希望文章能够帮你解决c# – 如何使用EventHandler动态创建/删除ASP.NET页面的控件?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。