2014-07-15 15 views
0

问题很简单,我可以在aspx页面的page_load之前调用usercontrol的page_load?我可以在aspx页面的page_load事件之前调用usercontrol的page_load事件吗?

编辑

它不可能父母的Page_Load前致电孩子的Page_Load事件。

我有这个aspx类叫just4test测试puropse。 它的ASPX代码:

<body> 
    <form id="form1" runat="server"> 
    <uc1:lcont ID="lcont1" runat="server" /> 
    <div> 

    </div> 
    </form> 

正如你可以看到它使用的是用户控件文件。

而其背后的代码是:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (Page.IsPostBack) 
    { 
     lcont1.my_tv_SelectedNodeChanged(sender, e); 
    } 
} 

现在用户控件:

public partial class lcont : System.Web.UI.UserControl 
{ 
sql_con sq = new sql_con(); 
protected void Page_Load(object sender, EventArgs e) 
{ 

    if (!Page.IsPostBack) 
    { 
     bind_data(); 
    } 
} 

public void mytry() 
    { 
     Console.WriteLine("helo"); 
    } 
public void bind_data() 
{ 
    main_cat mcobj = new main_cat(); 
    List<main_cat> mclist = new List<main_cat>(); 
    mclist = mcobj.get_mcatlist(); 

    populatetree(mclist); 
} 

public void populatetree(List<main_cat> mytnode) 
{ 
    TreeNode parentnode = null; 
    foreach (main_cat mc in mytnode) 
    { 
     parentnode = new TreeNode(mc.Cname, mc.Cid.ToString()); 
     foreach (sub_cat sc in mc.scl) 
     { 
      TreeNode cnode = new TreeNode(sc.PRODUCT, sc.SID.ToString()); 
      parentnode.ChildNodes.Add(cnode); 
     } 
     parentnode.Collapse(); 
     my_tv.Nodes.Add(parentnode); 
    } 
} 

public void my_tv_SelectedNodeChanged(object sender, EventArgs e) 
{ 
    TreeView tv = sender as TreeView; 
    //TreeView tv = new TreeView(); 
    var selectedN = tv.SelectedNode; 

    if (selectedN.Parent != null) 
    { 
     var id = tv.SelectedNode.Value; 
     var name = tv.SelectedNode.Text; 
     //Session["mySvar"] = id; 

     ScriptManager.RegisterStartupScript(this, this.GetType(), "nething", "show("+id+")", true); 
    } 
    else 
    { 
     //Response.Redirect("test.aspx"); 
    } 


} 

}

我需要调用函数my_tv_SelectedNodeChanged(发件人,E); just_test页面的page_load之前的用户控件,我已经这样做了。但是当我运行该程序时,它说

未将对象引用设置为对象的实例。

我该怎么办?

+0

你的意思是说父母面前孩子来了。 –

+0

我不认为它可能 –

+0

你不能让孩子没有父母......这远远超出了编程。你真的想做什么? – Sayse

回答

0

Page_Load no,但OnInit发生之前。取决于你的实际问题,你可以在那里移动你的逻辑。

或者呼叫的用户控制的公共方法,你做任何事情之前在父页Page_Load事件

Page Life Cycle

+0

我已经更新了问题。并作为你可以看到我有任何其他的东西之前调用公共方法的用户控制,这是我需要的,但它不工作.HELP! – suman

+0

或者我可以在page_load之后调用相同的aspx函数吗? – suman

+0

很难猜到你在做什么...... 从你的代码中,我们可以看到当你第一次加载页面(!Page.IsPostBack)时,你在用户控件中绑定了你的数据,然后你做了什么在你的页面被发布后,你的主页会触发treelist的选择更改事件,但这没有任何作用,因为没有真正改变(我的猜测) –

相关问题