一次回发后从列表中删除

时间:2012-05-18 19:31:36

标签: c# asp.net button dynamic arraylist

我创建了Listbox种食物(Apple,Banana等),并在页面上运行Javascript,将列表中的所选项目添加到ArrayList和作为一个按钮。该按钮的功能是,当您单击该按钮时,该项目将从ArrayList中删除,并且该按钮也会被删除(在回发后)。

当我运行此代码时,它会将项添加到列表中并按预期创建按钮。但是,当我单击按钮时,它不会从页面中删除该项目,直到页面重新加载第二次。

如何在点击和第一次回发之后而不是在两次回发之后将项目从ArrayList中删除?

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);
}

1 个答案:

答案 0 :(得分:0)

您可以在viewstate中保存一个值,指示已处理第一个回发。在没有处理其他处理静态值的方法的情况下,这可能是这种情况下最直接的方法。