0

Listbox食品 (リンゴ、バナナなど) を作成Javascriptし、リストから選択した項目をArrayListボタンとして追加するページを実行しています。ボタンは、クリックすると項目が から削除されArrayList、ボタンも (ポストバック後に) 削除されるように機能します。

このコードを実行すると、項目がリストに追加され、期待どおりにボタンが作成されます。ただし、ボタンをクリックしても、ページがもう一度リロードされるまでリストから項目が削除されません。

ArrayList2回のポストバックの後ではなく、クリックと最初のポストバックの後にアイテムが削除されるようにするにはどうすればよいですか?

static private ArrayList myAL { set; get; }

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
        myAL = new ArrayList();

    Report1();

    Label1.Text = myAL.Count.ToString();
}

private void Report1()
{
    String FullFilter = ""; int FilterCount = 0;

    if (Request.Params["ListBox1Hidden"] != null && (string)Request.Params["ListBox1Hidden"] == "doubleclicked")
        myAL.Add(lstBox.SelectedItem.Text);

    myAL.Remove(Session["RemoveButton"].ToString());
    foreach (Object obj in myAL)
    {
        FilterCount++;
        if (FilterCount > 1)
            FullFilter += ", ";

        FullFilter += String.Format("'{0}'", obj);

        Button button = new Button();
        button.Text = obj.ToString();
        button.ID = "Dist" + obj.ToString();
        button.Click += new EventHandler(ButtonClickOneEvent);
        PlaceHolder1.Controls.Add(button);
    }

    Label1.Text += FullFilter;
}

void ButtonClickOneEvent(object sender, EventArgs e)
{
    Button button = sender as Button;
    myAL.Remove(button.Text);
}
4

1 に答える 1

0

最初のポストバックが処理されたことを示す値をビューステートに保存できます。この場合、静的な値を処理する他の方法を使用しないのがおそらく最も簡単な方法です。

于 2012-05-18T19:48:47.883 に答える