0

ユーザーが6つのボタンのどれを選択したかに応じて、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 = "Pink"}になります。ただし、SetCSSメソッドのifステートメントをステップ実行すると、 else if(sender.ToString()== "Pink")条件が満たされていない場合、スタイル設定を3に設定するのではなく、プログラムはステートメントの最後に渡され、常に値を割り当てて終了します。プロパティに0の。

私は何が間違っているのですか?本当に助けていただければ幸いです...

4

2 に答える 2

2

あなたが使用する必要がありますsender.Id.ToString()

ASP.NETボタンを呼び出すsender.ToString()と、「System.Web.Ui.Button」などが返されます。

ボタンの設定方法に関連するコードを貼り付けてください。ボタンの名前の設定方法に応じてIDまたはテキストのいずれかが必要になる可能性があるため、回答をさらに明確にします。

現実的には、このコードをリファクタリングしてはるかに単純にすることができます。

Clickすべてのボタンのイベントをにマップする必要がありますSetCSS()。呼び出しをラップするだけの散在するメソッドがたくさんあるのは無意味です。

于 2013-02-14T22:19:17.993 に答える
1

if / elseブロックを変更して、sender.Textを確認します。

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

残りのステートメントについても同じようにします。

于 2013-02-14T22:19:10.640 に答える