如何使用静态方法调用非静态方法(使用WebControl)?

时间:2014-09-04 20:07:54

标签: c# asp.net .net

我有以下代码段。我只能在非静态方法中访问PbcTreeView,所以我在Page_Load期间调用它。但是,setTreeView()方法无法访问对象b,也无法调用buildTreeView()方法。 (根据WebMethod规则,setTreeView()必须是静态的,而buildTreeView不能是静态的,因为它使用TreeView)。我怎么能让它做与我在方法中的b.buildTreeView()类似的东西?

由于

protected void Page_Load(object sender, EventArgs e)
    {
        BuildPbcTree b = new BuildPbcTree(PbcTreeView);
    }

    [WebMethod]
    public static void setTreeView()
    {
        b.buildTreeView(); //how do I do this??
    }

    public class BuildTree
    {
        TreeView Tree;
        public BuildTree(TreeView t)
        {
            Tree = t;
        }
        public void buildTreeView() {...//implementation}
    }

2 个答案:

答案 0 :(得分:0)

您可以将类的实例传递给Static方法。例如,在Page_Load:

SetTreeView(b);

这假设您将Web方法更改为接受BuildTree类。

答案 1 :(得分:0)

我认为PbcTreeView可以控制您的网页。

在那种情况下,你运气不好。在AJAX调用期间(Web方法),您无法修改服务器端控件。 AJAX调用旨在按如下方式使用:

  1. 您可以使用JavaScript代码调用您的网络方法。
  2. Web方法执行一些数据库查找或计算并返回结果。
  3. 您的JavaScript代码会更新用户界面。
  4. 您正在尝试更新内部的用户界面。那不会奏效。如果需要这样做,请使用带有UpdatePanel的回发或异步回发。