有两个自定义控件 A.ascx 和 B.ascx
还有页面index.aspx
现在在index.aspx 中拖加了A.ascx 和.ascx
可能默认是A先加载现在我想让B先加载,因为A中要用到B中的session,必须B先加载改变session的值后再加载A
请问怎么做?哦,还有我是用的net2005

解决方案 »

  1.   

    index.aspx 里面放几个 <asp:PlaceHolder id = "placeMenu"...>然后在代码里用LoadControl加载自定义控件
    (custclassname) xxx = (custclassname) LoadControl("b.ascx")
    placeMenu.Controls.Add(xxx);
      

  2.   

    我是这样写的,能运行,可还是改变不了加载顺序:
    // 加载UserControl_Login控件
     UserControl_Login Logins = (UserControl_Login)LoadControl("UserControl/Login.ascx");//加载控件  
            PlaceHolder1.Controls.Add(Logins);// 加载UserControl_HtmlText控件
            UserControl_HtmlText HtmlTe = (UserControl_HtmlText)LoadControl("UserControl/HtmlText.ascx");//加载控件  
            PlaceHolder2.Controls.Add(HtmlTe);在调试的时,我是分别在两个控件的Page_Load事件中设的断点,可还是先到UserControl_HtmlText控件的Page_Load事件里,
    楼上的谢谢了,知道怎么做啊?
      

  3.   

    不应该做的事不要做,如果硬要做就要做顺了,不能搞扭曲的结构。asp.net控件是先执行父控件的page_load,然后是子控件,因此你可以把A.ascx嵌入B.ascx,页面上只有一个B.ascx。你的设计太乱了。(我所认为的)框架设计师应该做到的基本架构是:当要求A与B成为独立的控件的时候,他们各自的逻辑不能依赖于对方。当B修改了session之后,它会通知页面。页面此时会检查A时候加载了,如果没有加载就加载。之后,页面调用 A 的接口中的 sessionChanged 方法让它知道该接受session的改变。
      

  4.   

    我也是这样想的,
    UserControl_Login    控制登陆,从中可以获得用户的权限
    UserControl_HtmlText 控制显示,有权限就可以修改其显示,没有则不能
    请问在UserControl_HtmlText中怎样知道用户是什么权限,知道了权限才知道他是否有权修改其显示