2012-02-05 4 views
1

사용자가 단추를 클릭 할 때 일반 목록에 새 항목을 추가하려고하지만 마지막에 소개 된 항목 만 목록에 포함됩니다. 각 버튼 클릭 목록 중 :(재 초기화 얻을단추 클릭 이벤트 중 개체 목록에 항목을 추가하고 추가하는 방법

이 코드의 일부입니다.

List<ProdusBon> listaProduseBon = null; 

protected void Page_Load(object sender, EventArgs e) 
{ 
if (!Page.IsPostBack) 
    { 
     listaProduseBon = new List<ProdusBon>(); 
    } 
} 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    listaProduseBon.Add(new ProdusBon(-1, Int32.Parse(TextBox2.Text), -1, Int32.Parse (ListBox1.SelectedValue))); 
} 

하지만,이 경우 null 참조 excepti : 나는 또한이 코드를 사용하여 시도

List<ProdusBon> listaProduseBon = new List<ProdusBon>(); 

protected void Page_Load(object sender, EventArgs e) 
{ 
} 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    listaProduseBon.Add(new ProdusBon(-1, Int32.Parse(TextBox2.Text), -1, Int32.Parse (ListBox1.SelectedValue))); 
} 

에 제기했다.

마지막 항목뿐만 아니라 목록의 모든 항목을 유지해야하며 클릭 이벤트가 발생하면 목록에 새 항목을 추가해야합니다.

Default.aspx의 모든 컨트롤은 ListBox에만 "Enable AutoPostBack"이 true로 설정된 기본값을 가지지 만 이것이이 동작을 일으키지 않는다고 생각됩니다.

이 조건에서 목록의 항목을 유지하는 방법이 없으므로이 작업을 수행하는 방법을 알고 있으면 알려주십시오.

감사합니다.

답변

4

페이지로드간에 멤버 변수가 손실됩니다. 로드간에 동일한 값을 유지하려면 Session에 변수를 저장할 수 있습니다.

List<ProdusBon> listaProduseBon 
{ 
    get { return (List<ProdusBon>) Session["ProdusBon"]; } 
    set { Session["ProdusBon"] = value; } 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (listaProduseBon == null) listaProduseBon = new List<ProdusBon>(); 
} 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    listaProduseBon.Add(new ProdusBon(-1, Int32.Parse(TextBox2.Text), -1, Int32.Parse (ListBox1.SelectedValue))); 
} 
+0

안녕, 난이 버전을 사용하고 있습니다하지만 난이 예외를 얻고 게시 주셔서 감사합니다 : – Mircea

+0

[A] System.Collections.Generic.List'1 [ProdusBon] [B]은 System.Collections 캐스트 할 수없는 제너릭.리스트 .1 [프로 듀스 본]. 형식 'C : \ Windows \ assembly \ GAC_32 \ mscorlib \ 2.0.0.0__b77a5c561934e089 \ mscorlib.dll'위치의 'LoadNeither'컨텍스트에서 'mscorlib, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089' . 형식 B 'C : \ Windows \ assembly \ GAC_32 \ mscorlib \ 2.0.0.0__b77a5c561934e089 \ mscorlib.dll'위치의 'LoadNeither'컨텍스트에서 'mscorlib, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089' . – Mircea

+0

@Mircea 코드에 문제가 없습니다. 솔루션에 엉망인 뭔가가 있습니다. Build> Clean Solution을 실행 한 다음 Build> Build Solution을 실행합니다. –

0

버튼 클릭 이벤트에서 먼저 목록 버튼을 바인딩 한 다음 텍스트 상자에서 새 항목을 추가하십시오.

protected void Button1_Click(object sender, EventArgs e) 
{ 
    //code to bind your list goes here 
    listaProduseBon.Add(new ProdusBon(-1, Int32.Parse(TextBox2.Text), -1, Int32.Parse (ListBox1.SelectedValue))); 
} 
+0

안녕하세요, 다른 이벤트에서이 컬렉션을 사용하고 싶습니다. 따라서이 컬렉션은이 이벤트에 대해서만 "로컬"변수로 인식되지 않습니다. – Mircea

관련 문제