2012-03-12 2 views
0

me 다시,버튼 변경시 세션/뷰 상태 변경

건물을 나열하는 usercontrol이 포함 된 현재 페이지가 있습니다.

http://i40.tinypic.com/2eusoyt.png 지금, 내 멘토는 페이지가 2 열 속성을 표시 할 사용자를 할 수있는 버튼을 구축하는 나에게 물었다 : 여기

는 스크린 샷입니다.

어떻게 시도 했습니까?

  if (ViewState["numberOfColumns"] != null) 
      { 
       numberOfColumns= Int32.Parse(ViewState["numberOfColumns"].ToString()); 

      } 
      else 
      { 
       ViewState["numberOfColumns"] = 1; 
       numberOfColumns= 1; 
      } 

그런 다음 단추보기 뒤에 나는이 코드를 넣어 :

 protected void btnView_Click(object sender, EventArgs e) 
    { 
     switch(numberOfColumns) 
     { 
      case 1: 
       numberOfColumns= 2; 
       ViewState["numberOfColumns"] = numberOfColumns; 

       break; 
      case 2: 
       numberOfColumns= 1; 
       ViewState["numberOfColumns"] = numberOfColumns; 
       break; 
     } 

    } 

을하지만 짐작이 메소드는 sessionvariable을 설정 한 포스트 백을 필요로하고, 다른 나는 내를 Page_Load에 다음을 퍼팅 시도 하나는 최신 값으로 페이지로드를 실행합니다.

"올바른 방법"이 있어야한다는 것을 알고 있지만 찾을 수 없습니다.

내가 직접 말할 수있는 모든 직접적인 감사를드립니다. 이것은 내가 그것을 어떻게입니다 사전에

감사합니다, 크리스토프

+0

해답으로 답을 넣어주십시오. 는 SO 방법을 준수합니다. 정시에 답변을 수락 할 수 있습니다. –

+0

죄송합니다. 내 질문에 대답 할 수 없어서 그럴 수 없습니다. "평판이 100 미만인 사용자는 질문 후 8 시간 동안 자신의 질문에 답변 할 수 없습니다 .1 시간 후에 자발적으로 답변 할 수 있습니다. 그 때까지는 의견을 사용하거나 대신 질문을 수정하십시오." 편집 : 가능한 한 빨리 처리 할 것입니다. –

+0

예, 몇 시간 후에 시스템에서 허용됩니다. –

답변

0

좋아,

.

사용자 정의 컨트롤의 출력을 작성하는 메서드가 위의 코드 조각 바로 뒤에 호출되었습니다. 그것은 "GetProperties()"라고 불립니다.

페이지 사이클에 따라 .net은 먼저 Page_Load를 실행하고 마지막으로 제어 이벤트를 실행합니다.

그렇다면 처음으로 ifProperties()에 대한 호출 (ifPostback = false 일 때)을 if에 넣었습니다. 따라서 페이지를 한 번 방문하면 메서드가로드되고 이후에는 더 이상로드되지 않습니다.

그렇다면 단추를 IsPostback = true로 설정하면 메서드 호출을 내 단추에 넣을 수 있습니다.

이것은 효과가 있습니다. 아래의 조각 : 보호 무효를 Page_Load (개체를 보낸 사람, EventArgs입니다 E) { // 몇 가지 일반적인 물건

  if (!IsPostBack) 
      { 
       ViewState["kolommen"] = 1; 
       AantalKolommen = 1; 
       GetProperties(_tkth, _categorie, _verkochtverhuurd); 
      } 
     } 

그리고

버튼 뒤에 나는 다음과 같은 한 :

 protected void btnView_Click(object sender, EventArgs e) 
    { 
     switch (Int32.Parse(ViewState["kolommen"].ToString())) 
     { 
      case 1: 
       AantalKolommen = 2; 
       ViewState["kolommen"] = 2; 
       break; 
      case 2: 
       AantalKolommen = 1; 
       ViewState["kolommen"] = 1; 
       break; 
     } 
     GetProperties(_tkth, _categorie, _verkochtverhuurd); 
    } 

이 매력처럼 작동을 . Altho, 나는 아직도 이것을 알고 싶습니다.