将项目添加到列表<>来自dropdownLsit并在页面上显示它们

时间:2013-05-29 09:31:12

标签: c# asp.net

我是asp.net和c#的新手。 我试图通过从dropdownList中选择为配置文件添加一些特性 并添加到列表<>。

现在它工作正常,但我猜,当点击最后的节目或保存按钮保存列表它不显示任何东西。 这是我的示例代码

这在Page_Load方法之前。

public  List<string> myList = new List<string>();


protected void Button1_Click(object sender, EventArgs e)
{     
    myList.Add(DropDownList1.SelectedItem.Value);
}
protected void Button2_Click(object sender, EventArgs e)
{
    myList.Remove(DropDownList1.SelectedItem.Value);
}
protected void Button3_Click(object sender, EventArgs e)
{
    foreach (string item in myList)
    {
        Label1.Text = item.ToString();
    }
}

我想在按钮1上单击,添加到myList的项目仅适用于本地范围吗?这就是为什么我有这个问题?请帮助,谢谢

3 个答案:

答案 0 :(得分:0)

你是对的。回发页面时,会创建另一个代码实例,并且填写的唯一内容与页面上的控件相关,这些控件将数据存储在ViewState中。执行所需操作的最简单方法是向页面添加另一个下拉列表(隐藏或不隐藏)并将项目添加到该页面。通过这种方式,它们将存储在viewstate中,您可以跟踪它们。

答案 1 :(得分:0)

您的问题是,在回发期间调用页面时,变量myList仅“生命”,并且在页面呈现后变量消失。您需要的是一种通过两次回发调用来保存变量值的方法。这可以在以下示例中完成:

public List<string> myList
{
   get
   {
      if( ViewState("myList") == null )
      {
        return new List<string>();
      }
      return (List<string>)ViewState("myList") 
   }

   set
   {
        ViewState("myList")  = value;
   }
}

protected void Button1_Click(object sender, EventArgs e)
{
    var tmp = myList;
    tmp.Add(DropDownList1.SelectedItem.Value);
    myList = tmp;


}

protected void Button2_Click(object sender, EventArgs e)
{
    var tmp = myList;
    tmp.Remove(DropDownList1.SelectedItem.Value);
    myList = tmp;

}

答案 2 :(得分:0)

更改

public  List<string> myList = new List<string>();

    public List<string> MyList
    {
        get
        {
            if (ViewState["Items"] == null)
                ViewState["Items"] = new List<string>() ;
            return (List<string>)ViewState["Items"];
        }
        set
        {
            ViewState["Items"] = value;
        }
    }

更改Button3_Click事件如下

protected void Button3_Click(object sender, EventArgs e)
{
    foreach (string item in myList)
    {
        Label1.Text += item.ToString();
    }
}