2014-02-17 2 views
0

단추가있는 책 개체가있는이 목록보기가 있으며 단추를 클릭하면 해당 개체를 사용자 지정 클래스 (책) 목록에 추가하여 코드에 목록을 선언합니다.사용자 지정 클래스 목록 초기화

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); 
     } 
    } 
: 명령 이벤트 메서드를 수행

protected void Page_Load(object sender, EventArgs e) 
    { 

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

을 내 목록보기에서 항목을 추가 페이지 클래스 뒤에 :

public List<Book> booklist; 

하고 난 페이지로드 방식으로 초기화

하지만 '개체 참조가 개체의 인스턴스로 설정되지 않았습니다.'라는 메시지가 나타납니다. 오류 모든 포스트 백에서 데이터를 보존하기 위해 내 목록을 초기화해야합니까?

답변

1

귀하의 솔루션에서 귀하의 목록은 각 요청 후에 폐기됩니다. 더 좋은 해결책은 목록을 요청간에 할당되도록 세션에 목록을 저장하는 것입니다.

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

감사합니다. 좋은 해결책이었습니다. –

관련 문제