如何在asp.net中的page_load()之前从另一个.aspx页面调用函数?

时间:2014-07-14 07:30:07

标签: c# asp.net

我有一个名为test.aspx的aspx页面,它继承了一个母版页。母版页有一个名为lcont.ascx的usercontrol文件,它有一个树视图,其节点填充了来自数据库和contentpalceholder的数据。

contentplaceholder是我想根据点击的treenode显示数据库中的数据的地方,因此在其中定义了一个Datalist。它相应的.cs文件给出了sqlconnection和query来显示page_load中的数据。

所以每当我点击test.aspx中的treenode时,都会调用相应的.cs文件的page_load。但我想要的是调用usercontrol文件lcont.ascx的.cs文件,以便我可以将id传递给查询test.aspx.cs的.cs文件。

是否可以在page_load之前从另一个页面调用函数? 或者是否可以在浏览自己的.cs文件之前转到另一个文件的.cs文件?

以下是来自lcont.ascx.cs

的代码
   protected void my_tv_SelectedNodeChanged(object sender, EventArgs e)
   {
    TreeView tv = sender as 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");
    }


  }

我想在test.aspx.cs文件的page_load之前调用此函数。

test.aspx.cs文件的代码是

 protected void Page_Load(object sender, EventArgs e)
 {
    display();  
 }

public void display()
{

    string str = hdn.Value;
    slbl.Text = "value is" + str;
    //var a = Session["mySvar"];
    var a = 2;
    sq.connection();
    SqlCommand cmd = new SqlCommand("select * from sub_catTbl where sid='" + a + "' ", sq.con);
    SqlDataReader sd = cmd.ExecuteReader();

    mydatalist.DataSource = sd;
    mydatalist.DataBind();
    sq.con.Dispose();
    sq.con.Close();
}

我需要在此page_load调用之前调用该函数,以便我可以给出sid =“我在点击lcont.ashx.cs中可用的treenode后获得的变量值”

2 个答案:

答案 0 :(得分:2)

部分回答here,但this answer实际上更好:您不应该从其他网页调用活动。

创建一个处理TreeWiew事件的类(从另一个上下文访问它),或者重新考虑你的应用程序。

答案 1 :(得分:1)

使用VB.net,在页面初始化

Private Sub _Default_Init(sender As Object, e As EventArgs) Handles Me.Init
    display()
End Sub

这是C#代码:

protected void Page_Init(object sender, EventArgs e)
    {
        display();
    }