多个按钮调用一个方法

本文关键字:一个 方法 按钮 调用 | 更新日期: 2023-09-27 17:59:30

我正试图根据用户选择的六个按钮中的哪一个,将CSS用户偏好持久化到我的数据库中。为了做到这一点,我试图为每个按钮点击事件分配一个整数值;无论点击哪个,都会将相应的整数作为参数传递给我的数据访问对象,以更新数据库。

我的方法是这样的:

    protected void SetCSS(object sender, EventArgs e)
    {
        Users setCss = new Users();
        if (IsPostBack)
        {
            if (sender.ToString() == "Blue")
            {
                setCss.StylePreference = 0;
            }
            else if (sender.ToString() == "Khaki")
            {
                setCss.StylePreference = 1;
            }
            else if (sender.ToString() == "Night")
            {
                setCss.StylePreference = 2;
            }
            else if (sender.ToString() == "Pink")
            {
                setCss.StylePreference = 3;
            }
            else if (sender.ToString() == "White")
            {
                setCss.StylePreference = 4;
            }
            else if (sender.ToString() == "Yellow")
            {
                setCss.StylePreference = 5;
            }
            setCss.UserLoginName = Session["eMail"].ToString(); // current user
            setCss.SetStylePreference(setCss.UserLoginName, setCss.StylePreference);
        }

在每个按钮的点击事件中:

    protected void btnBlue_Click(object sender, EventArgs e)
    {
        SetCSS(btnBlue, null);
    }
    protected void btnKhaki_Click(object sender, EventArgs e)
    {
        SetCSS(btnKhaki, null);
    }

等等。。。

我在发件人对象上放了一块手表,当选择粉红色按钮时,分配给发件人的值显示{Text="粉红色"}然而,当我在SetCSS方法中逐步执行if语句时else if(sender.ToString()=="粉红色")该条件不满足,程序没有将样式首选项设置为3,而是转到语句的末尾,最后总是为属性赋值0。

我做错了什么?非常感谢您的帮助。。。

多个按钮调用一个方法

您需要使用sender.Id.ToString()

在ASP.NET按钮上调用sender.ToString()将返回"System.Web.Ui.button"或类似的内容。

粘贴与你如何设置按钮相关的代码,我会进一步澄清我的答案,因为你可能需要Id或Text,这取决于你如何在按钮上设置名称。

实际上,您可以将此代码重构得简单得多。

您应该将所有按钮上的Click事件映射到SetCSS()。有很多分散的方法只包装调用是没有用的。

更改if/else块以检查发件人。文本

if (sender.Text.ToString() == "Blue")
        {
            setCss.StylePreference = 0;
        }

并对其余语句执行相同操作。