문제

C#.net을 사용하고 있습니다

보기 (Multiview) 내에 리피터가 있습니다. 각 행에는 'Edit'버튼이 포함되어 있습니다 (CommandArgument에 저장되는 것은 유형 ID).

<asp:Button ID="buttonClick" OnCommand="ButtonClick" CommandArgument='<%#Eval("ID")%>' runat="server" Text="Edit"/>

사용자가 '편집'버튼을 클릭하면 다른보기 (편집보기)로 이동합니다.

어떤 유형 평가 ( "ID")에 따라 다른 USERCONTROL이 표시되어야합니다.

Postback이 동일한 형태 (편집보기)로 발생하면 동적 제어의 상태가 상실된다는 것을 알았습니다. 따라서 Page_load를 통해 DIV (AppViewArea)에 액세스/채워야한다고 생각합니다.

내 page_load 내에서 사용자가 편집보기에 액세스 한 경우 DIV를 올바른 USERCONTROL로 채우기를 원합니다. 다음은 현재 내 페이지에있는 내용입니다.

if(_multiView1.ActiveViewIndex == 1) // This is the Edit View
{
  int typeId = Convert.ToInt32(viewAppointmentID.Value); // viewAppointmentID is a hidden field which is created within the ButtonClick method.

switch (typeId)
{
  case 1:
        {
          var control = Page.LoadControl("~/editBirthAppointment.ascx");
          appViewArea.Controls.Add(control); 
        }
        break;
  case 2:
        {
          var control = Page.LoadControl("~/editDeathAppointment.ascx");
          appViewArea.Controls.Add(control); 
        } 
        break;
}
}

protected void ButtonClick(object sender, CommandEventArgs e)
{
   var viewAppointmentID = Convert.ToInt32(e.CommandArgument);
   _multiView1.ActiveViewIndex = 1;
}

내 문제는 IF 통계 (_Mutliview)에 들어 가지 않으며 ViewAppointMentID도 저장하지 않는다는 것입니다. 나는 웹을 둘러 보았지만 실제로 도움이되는 것을 찾을 수는 없습니다. 내가 잘못된 방법으로 접근하고 있습니까?

도움을 주셔서 감사합니다.

감사

클레어

도움이 되었습니까?

해결책 2

이 코드를 대신 내 버튼 이벤트에 추가했습니다. 지금은 작동하는 것처럼 보이므로 ViewState 내에 저장해야합니다.

다른 팁

Page_load가 필요하지 않지만 그리드의 OnCommand 이벤트가 필요하며 해당 경우 명령 이름 및/또는 CommandArguments를 확인합니다.

사용해야하는 것 같습니다

  if(!Page.IsPostback())
       // fill grid here

그리고 OnrowCommand 이벤트에서는 USERCONTROLS를 페이지에 추가 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top