日期:2014-05-17  浏览次数:20446 次

使用母版的页面Page_Load的问题
如题,
UserList页面使用了母版,现要在Page_Load中绑定gridview数据,但无法显示数据

经过断点跟踪,发现数据源有数据,但页面没有显示
页面先加载了UserList页的Page_Load,然后加载了 MasterPage.Master的Page_Load
应该造成了对UserList页数据的覆盖

请问各位XDJM怎么解决这个问题呢?

C# code

 public partial class ListUser : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if(!Page.IsPostBack)
            {
                GwDataBind();
            }
        }

        private void GwDataBind()
        {
            string sql = "select * from [tb_user_info]";
            DataBase db=new DataBase();
            DataTable dt = db.GetDataTable(sql);
            GridView1.DataSource = dt.DefaultView;
            GridView1.DataBind();
        }
    }



------解决方案--------------------
探讨

通过逐句执行,
发现先执行了子版的page_load(绑定数据)
然后执行了母版的page_load(无操作)

------解决方案--------------------
另外也不存在什么“子版”的概念。母版页就是用户控件。可能你以为<form runat="server" action=.../>这个标记只能出现在页面上,这是不对的。假设你写一个aspx,里边直接引用一个ascx,那么这些东西也完全可以写在ascx上。

所以不能从“母版页”名词儿就牵强地去发明出“子版页”名词儿,因为那个名词儿混淆了结构。母版页是做为aspx里边的用于表达<form runat=server />部分的布局的,而aspx用于为自己内部的的 MastePage 的各个Content赋值(设置局部的子控件)。

母版页是aspx里边的子控件,而且masterpage是一种usercontrol(是从它继承的)。