首先说明一下,我是刚学asp.net没多久,很多概念不清,如有错误请见谅。
  问题是这样的, 我现在已经实现了根据情况向aspx页面中动态加载ascx,即可以点击左边的选项,向右边将在ascx。大致界面效果如下概念图(新手,勿怪.....),这是一个aspx页面:      LinkButton:员工管理   |        右  侧
      LinkButton:新闻管理   |        具  体
      LinkButton:时间安排   |        显  示
  
   右边显示的就是ascx,aspx的Page_load中有一个默认的加载的ascx.
  现在的麻烦是,当我点击左边的非默认的部分,然后点击右边加载ascx中的按钮时,默认先调用aspx的Page_Load,然后整个页面的右边就是默认的ascx了,这样就没有执行相应了Button_Click事件了。
   声明一下, 我的默认的加载ascx并没有写在if(!isPostBack)中。
   各位大神帮忙解答一下啊!!!

解决方案 »

  1.   

    我的默认的加载ascx并没有写在if(!isPostBack)中。
    你为什么不写在isPostBack里面呢?你这样每次刷新都被你重置为默认的了啊
      

  2.   


    因为如果写在那个里面的时候,点击ascx里面的按钮,会默认先调用aspx的Page_Load,然后这是isPostBack值是true, 这样aspx页面就没有加载任何ascx,也就是说ascx中的按钮事件并没有触发!我试过的
      

  3.   

    默认的放在if (!IsPostBack)内,
    其它放在Click事件内。
      

  4.   


    我之前试过放在 if(!isPostBack)里面,但是点击ascx里面的按钮以后 , 根本就不触发事件。然后放ascx的地方是空白的,没有加载任何ascx
      

  5.   

    首先你要明白,if (!IsPostBack)代表的是页面第一次加载时才执行,而点击button事件是触发的回发,默认的放在if (!IsPostBack)里面后除了页面第一次加载时会执行,以后点击button都只会执行click里面的事件。
      

  6.   


    你说的这个我明白。
    我的理解是这样的,
     首先如你所说, 我把加载默认ascx放在if (!isPostBack)中执行,那么就只有第一次访问aspx页面时,会加载默认的ascx页面,这个时候右边显示区域确实是我想要的ascx显示。
    但是问题在于,如果我点击了换取了另外一个ascx之后,如果点击该ascx中的按钮然后触发回发,就会调用aspx中的Page_load方法,但是由于加载ascx的放在 if (!isPostBack)中, 所以不会被执行,于是aspx页面就不会加载任何ascx,所以这时候右边的显示区域就是一片空白!!!!而且,由于不会加载任何aspx,所以就不会执行相应aspx中的Page_load方法,同样也就不会执行相应按钮的事件方法!!!
      

  7.   

    参考:
    http://www.cnblogs.com/insus/archive/2011/12/10/2283142.html
      

  8.   


    实际上我的跟你这个还是有一定区别的, 我是是需要根据需要加载不同的ascx(每次只需要一个ascx)而在不同的ascx中包含的是需要的不同的数据, 如题中所说的可能第一个ascx里面包含的是从数据库中读取的员工信息,在第二个ascx中是从数据库中读取的新闻信息...依次类推, 当我点击员工管理时, 只PlaceHolder中加载这一个ascx,而其他的都Clear掉。 
    但是当我点击这个ascx中的按钮时, 会首先执行aspx的Page_Load(这时若加载ascx语句写在if (!isPostBack)中,那么aspx就不会加载任何aspx,若是写在外面,则加载的默认的aspx。)这并不是我想要的结果。
    另外,ascx中需要绑定数据库数据的Repeater的DataSource和DataBind() 方法也必须写在 if (!isPostBack)外面,否则在第二次加载的时候,就会出现无绑定数据的情况。
      

  9.   


    这个功能我是已经实现了的, 但是正如你刷新的时候 默认加载的是UcA, 如果UcB中有一个按钮,点击它的话, 是否是应该先执行Default.aspx中的Page_Load,这时加载的是默认的UcA,而UcB中相应按钮的事件并不会触发。