2014-07-15 4 views
0

Вопрос прямолинейный. Могу ли я вызвать page_load usercontrol перед page_load страницы aspx?Можно ли вызвать page_load событие usercontrol перед событием page_load страницы aspx?

EDIT

Его не возможно назвать событие Page_Load ребенка перед Page_Load родителей.

У меня есть класс aspx под названием just4test для тестирования puropse. Его ASPX код:

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

    </div> 
    </form> 

Как вы можете видеть, он использует файл UserControl.

И его код за это:

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

Сейчас UserControl является:

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 (отправитель, е); usercontrol до page_load страницы just4test, и я это сделал. Но когда я запускаю программу, он говорит:

Ссылка на объект не установлена ​​в экземпляр объекта.

Что мне делать?

+0

Вы хотите сказать, Ребенок был до Родителя. –

+0

Я не думаю, что его возможно –

+0

Вы не можете сделать ребенка без родителя ... который выходит далеко за рамки программирования. Что вы на самом деле пытаетесь сделать? – Sayse

ответ

0

Page_Load нет, но OnInit предшествует. В зависимости от вашей реальной проблемы вы можете переместить свою логику.

Или вызвать публичный метод контроля пользователя, прежде чем делать что-нибудь еще в родительской страницы Page_Load события

См Page Life Cycle

+0

Я обновил вопрос. И как вы можете видеть, что я вызывал открытый метод usercontrol перед любой другой вещью, и это то, что мне нужно, но не работает. ПОЖАЛУЙСТА! – suman

+0

Или можно вызвать функцию того же aspx после page_load? – suman

+0

Трудно догадаться, что вы пытаетесь сделать ... Из вашего кода мы можем видеть, что вы связываете свои данные в пользовательском элементе управления, когда страница загружается в первый раз (! Page.IsPostBack), а затем что вы делаете на вашей странице, когда он будет отправлен назад, ваша главная страница запускает событие изменения выбора в списке, но это ничего не делает, поскольку ничего не изменилось (моя догадка) –

Смежные вопросы