自定义类列表初始化

时间:2014-02-17 13:53:15

标签: asp.net listview c#-4.0

我有这个列表视图,其中有书籍对象,有一个按钮,当我点击按钮时,我想将该对象添加到我的自定义类(书)列表,所以我在我的代码后面的页面类中声明了一个列表:

public List<Book> booklist;

我在页面加载方法中初始化它:

    protected void Page_Load(object sender, EventArgs e)
    {

        if (!this.IsPostBack)
        {
           booklist = new List<Book>();
        }
    }

并在我的列表视图中添加项目Do Command事件方法:

    protected void DoTheCommand(object sender, ListViewCommandEventArgs e)
    {

        string commandName = e.CommandName;
        ListViewItem selectedItem = e.Item;

        if (commandName == "Foo")
        {
            string[] commandArgs = e.CommandArgument.ToString().Split(new char[] { ',' });
            Book b = new Book()
            {
                BookId = int.Parse(commandArgs[0]),
                Name = commandArgs[1],
                Author = commandArgs[2],
                Price = int.Parse(commandArgs[3])
            };
            booklist.Add(b);
        }
    } 

但我得到'对象引用没有设置为对象的实例。'错误我应该在哪里初始化我的列表,以便在每次回发中保留我的数据?

1 个答案:

答案 0 :(得分:1)

在您的解决方案中,您的列表会在每次请求后销毁。 更好的解决方案是将列表存储在会话中,以便列表保持在请求之间分配

protected void Page_Load(object sender, EventArgs e)
{
   if (Session["MyList"] == null)
       Session["MyList"] = new List<Book>();
   booklist = (List<Book>) Session["MyList"];
}