2014-02-17 107 views
0

我有这个列表视图与书籍对象在它有一个按钮,当我点击按钮我想添加该对象到我的自定义类(书)列表,所以我在我的代码中声明一个列表后面的页面类:自定义班级列表初始化

public List<Book> booklist; 

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

protected void Page_Load(object sender, EventArgs e) 
    { 

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

,在我的列表视图中添加的项目执行命令的事件方法:

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

在您的解决方案中,您的列表在每次请求后被销毁。 一个更好的解决办法是将存储在会话列表中,这样的列表保持请求之间分配

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

由于这是一个很好的解决方案。 –