2009-10-05 2 views
1

에서 나는 내가보기 (멀티 뷰) 각 행은 '편집'버튼을 포함 내에 중계기를합니다 (CommandArgument에 저장을 유형의 ID입니다) C# .NET을액세스 CommandEventArgs PageLoad

을 사용하고 있습니다.

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

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

Eval ("ID") 유형이 선택되면 다른 UserControl이 표시되어야합니다.

같은 모양 (편집보기)에서 포스트 백이 발생하면 동적 컨트롤에 대한 상태가 손실된다는 사실을 알고있었습니다. 따라서 나는 Page_Load를 통해 DIV (appViewArea)에 액세스하거나 채울 필요가 있다고 생각한다.

내 Page_Load 내에서 사용자가 Edit View에 액세스 한 경우에만 올바른 UserControl으로 DIV를 채우기를 원합니다. 다음은 현재 내 Page_Load 내에있는 것입니다.

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; 
} 

내 문제는 결코로 간다 있다는 것입니다 경우 statament (_mutliview)하고 또한 viewAppointmentID를 저장하지 않습니다. 나는 웹을 둘러 보았지만 정말로 나를 도와주는 것을 찾을 수 없었다. 잘못된 방식으로 접근하고 있습니까?

미리 도움을 청하십시오.

감사

클레어

답변

0

대신이 코드를 버튼 이벤트에 추가했습니다. 그것은 지금 작동하도록 보인다 ViewState 내에 저장해야합니다.

0

당신이를 Page_Load하지만 당신은 명령 이름 및/또는 commandarguments을 확인 그리드에서 해당 이벤트에 요구시 작동되는 이벤트가 필요하지 않습니다는

당신이 사용해야하는 것 같다

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

과 onRowCommand 이벤트는 페이지

에 추가 된 UserControls를 추가 할 수 있습니다
+0

동적 컨트롤이 ViewState 내에 저장되지 않으므로 Page_Load 내에서 사용해야합니다. – ClareBear

+0

oncommand를 사용하여 세션 var에 추가 한 다음 page_load? 또는 더 많은 코드를 제공 할 수 있습니까? –