多个按钮调用单个方法

时间:2013-02-14 22:16:03

标签: c# asp.net

我正在尝试根据用户选择的六个按钮中的哪一个将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);
    }

等...

我在发件人对象上放了一个监视器,当选择粉红色按钮时,分配给发件人的值会读取         {文本= “粉红”} 但是,当我逐步完成SetCSS方法中的if语句时,我来到了         else if(sender.ToString()==“Pink”) 条件不满足,而不是将样式首选项设置为3,程序将传递到语句的末尾,最后总是为属性赋值为0.

我做错了什么? 非常感谢帮助...

2 个答案:

答案 0 :(得分:2)

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

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

粘贴与您设置按钮的方式相关的代码,我会更多地澄清我的答案,因为您可能需要ID或文字,具体取决于您在按钮上设置名称的方式。

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

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

答案 1 :(得分:1)

更改if / else块以检查sender.Text

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

并为其余陈述做同样的事。