如何用静态方法调用非静态方法(使用WebControl)
本文关键字:静态方法 使用 WebControl 何用 调用 | 更新日期: 2023-09-27 18:20:52
我有以下代码片段。我只能在非静态方法中访问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}
}
您可以将类的实例传递给静态方法。例如,在您的Page_Load:中
SetTreeView(b);
这假设您更改web方法以接受BuildTree类。
我假设PbcTreeView
是页面上的一些控件。
那样的话,你就倒霉了。在AJAX调用(web方法)期间,不能修改服务器端控件。AJAX调用的使用方式如下:
- 您可以用JavaScript代码调用web方法
- web方法执行一些数据库查找或计算并返回结果
- 您的JavaScript代码会更新用户界面
您正在尝试在web方法内部更新用户界面。那行不通。如果需要这样做,请使用带有UpdatePanel的回发或异步回发。