0

予約システムを行っているため、Web ページにいくつかのボタンを実装しました。Webページのボタンをクリックするユーザーを制限することができましたが、ここでの問題は、ユーザーが最初のボタンをクリックしようとすると、ボタンを1つだけ選択するように求めるアラートメッセージがポップアップするため、ボタンを選択することさえできないことです。ユーザーが 1 つのボタンだけを選択できるようにするにはどうすればよいですか。ユーザーが別のボタンを選択しようとすると、警告メッセージが使用されます。問題を引き起こしているのは私の数だと思います。

ここに私の.csコードがあります:

protected void Button1_Click(object sender, EventArgs e)
{
    int counter = 0;
    if (counter > 1)
    {
        Button1.Text = "Selected";
        Button1.BackColor = System.Drawing.Color.DarkGreen;
        Button2.Text = "Selected";
        Button2.BackColor = System.Drawing.Color.DarkGreen;
        startingTime.Text = "9AM";
        endingTime.Text = "11AM";
    }

    else
    {
        ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert('Please select one slot only');", true);
    }
}
protected void Button2_Click(object sender, EventArgs e)
{
    int counter = 1;
    if (counter > 0)
    {
        Button2.Text = "Selected";
        Button2.BackColor = System.Drawing.Color.DarkGreen;
        Button3.Text = "Selected";
        Button3.BackColor = System.Drawing.Color.DarkGreen;
        startingTime.Text = "10AM";
        endingTime.Text = "12PM";

    }

    else
    {
        ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert('Please select one slot only');", true);
    }
}
protected void Button3_Click(object sender, EventArgs e)
{
    int counter = 1;
    if (counter > 0)
    {
        Button3.Text = "Selected";
        Button3.BackColor = System.Drawing.Color.DarkGreen;
        startingTime.Text = "11AM";
        endingTime.Text = "1PM";

    }

    else
    {
        ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert('Please select one slot only');", true);
    }
}
4

3 に答える 3

3

これは常に と評価されるfalseため、常にelseブロックに入ります。

int counter = 0;
if (counter > 1)

counter コードが実行された後に変更する必要があります。また、それはクラスのフィールドである必要があります (そうしないcounterと、メソッドが終了すると現在は失われるため、変更は失われます)。

Button.Enabledボタンを有効/無効にするために使用することもできます。

于 2012-07-25T09:23:52.807 に答える
1

int counter = 0グローバル変数として宣言します。

于 2012-07-25T09:27:07.733 に答える
0

Button1 のこの例を試す必要があります

//Save your counter in Viewstate or InputHidden in order to persist

public int Counter 
{
    get
    {
        int s = (int)ViewState["Counter"];
        return (s == null) ? 0 : s;
    }
    set
    {
        ViewState["Counter"] = value;
    }
}


protected void Button1_Click(object sender, EventArgs e)
{
    Counter = Counter + 1;

    if (Counter > 1)
    {
        Button1.Text = "Selected";
        Button1.BackColor = System.Drawing.Color.DarkGreen;
        Button2.Text = "Selected";
        Button2.BackColor = System.Drawing.Color.DarkGreen;
        startingTime.Text = "9AM";
        endingTime.Text = "11AM";
    }

    else
    {
        ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert('Please select one slot only');", true);
    }
}
于 2012-07-25T09:28:34.757 に答える