2010-08-20 7 views
1

4 개의 테이블이있는 페이지가 있습니다. 처음에는 페이지가로드 될 때 1 & 2가 표시됩니다. 정상적으로 작동합니다. 포스트 백 (제출을 클릭하면)에 3 &이 표시되어야합니다. 4. 잘 작동해도 (여기에 표시된 코드). 제출을 다시 클릭하면 updatePaymentInfo()을 호출하여 리디렉션해야합니다. UpdatepaymentInfo()을 호출하기위한 조건으로 쓸 내용이 있습니까? 제출을 클릭하면 다른 다시 게시로 3 & 4가 다시 표시되기 때문입니다.제출 버튼에 다시 게시

protected void imgbtnSubmit_Click(object sender, ImageClickEventArgs e) 
{ 
    try 
    { 
     if (Page.IsPostBack) 
     { 
      trtest.Visible = false; 
      trCCandBilling.Visible = true; 
      trtest2.Visible = true; 
     } 
     else 
     { 
      UpdatePaymentInfo(); 
      Response.Redirect(ApplicationData.URL_MERCHANT_ACCOUNT_HOME, true); 
     } 
    } 
} 

답변

2

가장 쉬운 방법은 두 곳의 이미지 제출 버튼을 같은 위치에 두는 것입니다. 버튼 A는 이미 가지고있는 버튼입니다. 버튼 B는 제출 처리기가 UpdatepaymentInfo를 실행하고 리디렉션하는 새 버튼입니다.

단추 A가 표시되어있는 동안 단추 B가 보이지 않게 시작됩니다. 가시성 변경 외에도 버튼 A를 클릭하면 버튼 a가 숨겨지고 버튼 B가 표시됩니다. 그런 다음 버튼 B를 클릭하면 올바른 작업이 수행됩니다.

그다지 우아하지 않습니다.

또 다른 해결책은 현재 페이지 상태를 나타내는 값을 페이지에 저장하는 것입니다. 그러면 단추 클릭을 확인할 수 있습니다.

+0

지금 해보려고합니다. 감사합니다 Chris! – Ram

+0

그래서 여러 개의 웹 컨트롤을 수동으로 숨기고 표시 할 필요없이 MultiView의 기능을 설명합니다 –

+0

@ Ladislav Mrnka : 아마도, 그렇습니다. 저는 슬프게도 ASP.NET의 일부로 약간의 돌연변이가 있습니다. 그런 다음 다시 한 번, 나는 내가 컨트롤을 숨기고 관리하는 것을 선호한다는 것을 알게됩니다. supercontrols 내장에 대해 싫어합니다. 나는 많은면에서 ASp.NET 사고 방식에서 100 %가 아니라고 생각합니다. . 당신이 말한 것에서 말하면, Multiview가 일을 할 수있는 것처럼 들리 겠지만, 말하자면 내가 사용한 적이없는 말처럼 확실히 말할 수는 있습니다. :) – Chris

1

매우 더러운 방법은 Page.IsPostBack 및 trtest2.Visible을 확인하는 것입니다.

더러운 솔루션을 무효화하려면 표 3 & 4를 두 번째 페이지로 이동하여 첫 페이지의 "제출"을 클릭하면 두 번째 페이지로 리디렉션되도록하십시오. 이 후 사용자가 두 번째 페이지에서 '제출'을 클릭하면 MERCHANT_ACCOUNT_HOME (으)로 리디렉션 할 수 있습니다.

+0

그래, 그럴 권리가있어. (불행히도, 내가 결정할 권리가 없다.) – Ram

+1

나는 여러 페이지의 해결책이 있어야한다고 말하며 현재 디자인이 단일 책임 원칙을 위반하고있는 것으로 보인다. 당신이 말한 것처럼 포스트 백의 의미를 확인하는 문제를 수정했다면 –

0

페이지의 현재 상태를 관리하는 데 문제가있는 것 같습니다. 시도해 볼 수 있습니다.

  1. 두 번째 제출 버튼이 있습니다. 처음부터 스타일 상으로는 구별 할 수 없으며 그에 따라 숨기거나 표시되지만 자체 클릭 이벤트가 있습니다.
  2. 숨겨진 양식 값을 페이지에 배치하여 프로세스의 현재 "단계"를 추적합니다.
  3. 페이지를 두 페이지로 나누는 것은 사용자의 관점에서 보면 분명히 두 페이지 프로세스입니다.
  4. 내 개인적으로 좋아하는 MVC로 이동 :) 기존 WebForms 앱에 머물러 있고 다시 작성할 예산이 없다면 이해할 수 있습니다.
0

imgbtnSubmit_Click은 제출 버튼의 Click 이벤트를 처리하므로이 메소드는 다시 게시하는 동안 만 호출되므로 조건이 올바르지 않은 것으로 보입니다.

이 방법을 사용하지 않겠습니다. ASP.NET에는 이러한 요구 사항을 지원하는 컨트롤이 포함되어 있습니다. MultiView 및 마법사를 확인하십시오. 테이블 1 & 2와 버튼 3과 테이블 3 & 4 및 버튼이있는 다른 뷰를 별도로 생성하십시오. 첫 번째보기의 단추는보기를 전환하고 두 번째보기의 단추는 메소드를 호출하고 재 지정됩니다.

0

다른 방법으로 현재 설정을 유지하고 단추에 명령 인수를 추가 할 수 있습니다. 기본적으로 첫 번째 클릭을 확인하는 인수가 있습니다. 그런 다음 첫 번째 클릭에서 명령 인수를 확인하여 표시하고 명령 인수를 다른 것으로 변경하십시오. 그래서 다음 버튼을 클릭하면 두 번째 명령 인수와 관련된 작업을 수행합니다.따라서 새로운 컨트롤을 숨기거나 표시하지 않고도 작업을 뒤집을 수 있습니다.