2012-06-11 5 views
1

모든 페이지 뒤에있는 MasterPage가있는 사이트를 만든 다음 동적으로 내 UserControls를로드하는 메뉴가있는 페이지를 만들고 그 안에 메뉴가있는 UserControl을 하나 만듭니다. 그 동적으로 다른 사람을로드 UserControls ...두 번째 포스트 뒤로 버튼을 클릭 할 수 없습니다. OnClick

내 문제는 : 내가 처음으로 OnClick 이벤트를 발생시킨 후 메뉴가있는 UserControl은 다시 발사 할 수 없다 ... 누군가가 그 이유를 알고 있습니까?

코드는 다음과 같습니다 :

페이지 :

public partial class AboutBrazil : BasePage 
{ 
    private String LastLoadedControl_AboutBrazil 
    { 
     get 
     { 
      if (ViewState["LastLoadedControl_AboutBrazil"] != null) 
      { 
       return ViewState["LastLoadedControl_AboutBrazil"].ToString(); 
      } 
      else 
      { 
       return "~/UserControl/AboutBrazil/ucIntroduction.ascx"; 
      } 
     } 
     set 
     { 
      ViewState["LastLoadedControl_AboutBrazil"] = value; 
     } 
    } 

    private void LoadUserControl() 
    { 
     UserControl userControl = (UserControl)Page.LoadControl(LastLoadedControl_AboutBrazil); 

     phAboutBrazil.Controls.Clear(); 
     phAboutBrazil.Controls.Add(userControl); 

     userControl.ID = "myUserControl"; 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     this.SetTitulo("About Brazil"); 

     LoadUserControl(); 
    } 

    protected void btnLoadUserControl_Click(object sender, EventArgs e) 
    { 
     System.Drawing.Color foreColorI = System.Drawing.Color.FromArgb(102, 102, 102); 
     System.Drawing.Color foreColorA = System.Drawing.Color.FromArgb(27, 41, 13); 

     Button btnSender = (Button)sender; 

     btnIntroduction.ForeColor = foreColorI; 
     btnHistory.ForeColor = foreColorI; 
     btnThePeople.ForeColor = foreColorI; 
     btnBrazilianRegions.ForeColor = foreColorI; 
     btnBrazilianEcosystem.ForeColor = foreColorI; 
     btnGeneralInformation.ForeColor = foreColorI; 
     btnTips.ForeColor = foreColorI; 

     switch (btnSender.CommandArgument) 
     { 
      case "Introduction": 
       btnSender.ForeColor = foreColorA; 

       LastLoadedControl_AboutBrazil = "~/UserControl/AboutBrazil/ucIntroduction.ascx"; 
       break; 
      case "History": 
       btnSender.ForeColor = foreColorA; 

       LastLoadedControl_AboutBrazil = "~/UserControl/AboutBrazil/ucHistory.ascx"; 
       break; 
      case "The People": 
       btnSender.ForeColor = foreColorA; 

       LastLoadedControl_AboutBrazil = "~/UserControl/AboutBrazil/ucThePeople.ascx"; 
       break; 
      case "The Brazilian Regions": 
       btnSender.ForeColor = foreColorA; 

       LastLoadedControl_AboutBrazil = "~/UserControl/AboutBrazil/ucTheBrazilianRegions.ascx"; 
       break; 
      default: 
       btnSender.ForeColor = foreColorA; 

       LastLoadedControl_AboutBrazil = "~/UserControl/AboutBrazil/ucIntroduction.ascx"; 
       break; 
     } 

     this.LoadUserControl(); 
    } 
} 

첫 번째 사용자 제어 :

AsyncPostBackTrigger _Trigger = new AsyncPostBackTrigger(); 

_Trigger.ControlID = btnButton.ID; 
_Trigger.EventName = "Click"; 

this.upTheBrazilianRegions.Triggers.Clear(); 
this.upTheBrazilianRegions.Triggers.Add(_Trigger); 
:이 라인을 제거하는 문제를 해결
 private List<String> listControl = new List<String>(new String[] { "Introduction", "North", "Northeast", "Middle-West", "South", "Southeast" }); 

    private String LastLoadedControl_TheBrazilianRegions 
    { 
     get 
     { 
      if (ViewState["LastLoadedControl_TheBrazilianRegions"] != null) 
      { 
       return ViewState["LastLoadedControl_TheBrazilianRegions"].ToString(); 
      } 
      else 
      { 
       return "~/UserControl/AboutBrazil/TheBrazilianRegions/ucIntroduction.ascx"; 
      } 
     } 
     set 
     { 
      ViewState["LastLoadedControl_TheBrazilianRegions"] = value; 
     } 
    } 

    private String LastClickedButton_TheBrazilianRegions 
    { 
     get 
     { 
      if (ViewState["LastClickedButton_TheBrazilianRegions"] != null) 
      { 
       return ViewState["LastClickedButton_TheBrazilianRegions"].ToString(); 
      } 
      else 
      { 
       return "Introduction"; 
      } 
     } 
     set 
     { 
      ViewState["LastClickedButton_TheBrazilianRegions"] = value; 
     } 
    } 

    private void LoadUserControl() 
    { 
     UserControl userControl = (UserControl)Page.LoadControl(LastLoadedControl_TheBrazilianRegions); 

     phTheBrazilianRegions.Controls.Clear(); 
     phTheBrazilianRegions.Controls.Add(userControl); 

     userControl.ID = "myUserControlNeasted"; 
    } 

    private void LoadClickedButton() 
    { 
     foreach (String control in this.listControl) 
     { 
      HtmlTableCell tdControl = (HtmlTableCell)this.FindControl("td" + control.Replace("-", "")); 

      if (control == this.LastClickedButton_TheBrazilianRegions) 
      { 
       tdControl.InnerHtml = "<div class=\"menuAtivoLeft\"></div><div class=\"menuAtivoCenter\"><div class=\"menuAtivoCenterContent\">" + this.LastClickedButton_TheBrazilianRegions + "</div></div><div class=\"menuAtivoRight\"></div>"; 
      } 
      else 
      { 
       try 
       { 
        Button btnButton = new Button(); 

        btnButton.ID = "btn" + control.Replace("-", ""); 
        btnButton.Text = control; 
        btnButton.CommandArgument = control; 
        btnButton.CssClass = "tableContentMenuContentButton"; 
        btnButton.Click += new EventHandler(this.btnLoadUserControl_Click); 

        AsyncPostBackTrigger _Trigger = new AsyncPostBackTrigger(); 

        _Trigger.ControlID = btnButton.ID; 
        _Trigger.EventName = "Click"; 

        tdControl.Controls.Clear(); 
        tdControl.Controls.Add(btnButton); 

        this.upTheBrazilianRegions.Triggers.Clear(); 
        this.upTheBrazilianRegions.Triggers.Add(_Trigger); 

        btnButton.Dispose(); 
       } 
       catch (Exception ex) 
       { 
        throw ex; 
       } 
      } 

      tdControl.Dispose(); 
     } 
    } 

    protected override void OnPreRender(EventArgs e) 
    { 
     this.LoadUserControl(); 
     this.LoadClickedButton(); 
     base.OnPreRender(e); 
    } 

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

    protected void btnLoadUserControl_Click(object sender, EventArgs e) 
    { 
     Button btnSender = (Button)sender; 

     switch (btnSender.CommandArgument) 
     { 
      case "Introduction": 
       LastLoadedControl_TheBrazilianRegions = "~/UserControl/AboutBrazil/TheBrazilianRegions/ucIntroduction.ascx"; 
       break; 
      case "North": 
       LastLoadedControl_TheBrazilianRegions = "~/UserControl/AboutBrazil/TheBrazilianRegions/ucNorth.ascx"; 
       break; 
      case "Northeast": 
       LastLoadedControl_TheBrazilianRegions = "~/UserControl/AboutBrazil/TheBrazilianRegions/ucNortheast.ascx"; 
       break; 
      case "Middle-West": 
       LastLoadedControl_TheBrazilianRegions = "~/UserControl/AboutBrazil/TheBrazilianRegions/usMiddleWest.ascx"; 
       break; 
      case "South": 
       LastLoadedControl_TheBrazilianRegions = "~/UserControl/AboutBrazil/TheBrazilianRegions/ucSouth.ascx"; 
       break; 
      case "Southeast": 
       LastLoadedControl_TheBrazilianRegions = "~/UserControl/AboutBrazil/TheBrazilianRegions/ucSoutheast.ascx"; 
       break; 
      default: 
       LastLoadedControl_TheBrazilianRegions = "~/UserControl/AboutBrazil/TheBrazilianRegions/ucIntroduction.ascx"; 
       break; 
     } 

     LastClickedButton_TheBrazilianRegions = btnSender.CommandArgument; 

     this.LoadUserControl(); 
     this.LoadClickedButton(); 
    } 

답변

1

관련 문제