我可以在aspx页面的page_load事件之前调用用户控件的page_load事件吗?

2023-12-29

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

EDIT

不可能在父级的 page_load 之前调用子级的 page_load 事件。

我有一个名为 just4test 的 aspx 类用于测试目的。 其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(sender, e);在 just4test 页面的 page_load 之前的用户控件,我已经这样做了。但是当我运行程序时,它说

你调用的对象是空的。

我应该怎么办?


Page_Load 没有,但 OnInit 发生在之前。根据您的实际问题,您可以将逻辑移至那里。

或者在父页面 Page_Load 事件中执行任何其他操作之前调用用户控件的公共方法

See 页面生命周期 http://msdn.microsoft.com/en-us/library/ms178472%28v=vs.85%29.aspx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以在aspx页面的page_load事件之前调用用户控件的page_load事件吗? 的相关文章

随机推荐