2014-02-17 4 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

Спасибо это было хорошим решением. –

Смежные вопросы