簡體   English   中英

如何用靜態方法調用非靜態方法(使用WebControl)?

[英]How do I call a non-static method (that uses a WebControl) with a static method?

我有以下代碼片段。 我只能以非靜態方法訪問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}
    }

您可以將類的實例傳遞給Static方法。 例如,在您的Page_Load中:

SetTreeView(b);

假定您將Web方法更改為接受BuildTree類。

我認為PbcTreeView是您頁面上的某些控件。

在這種情況下,您很不走運。 您不能在AJAX調用(Web方法)期間修改服務器端控件。 AJAX調用的設計用途如下:

  1. 您可以使用JavaScript代碼調用網絡方法。
  2. Web方法執行一些數據庫查找或計算並返回結果。
  3. 您的JavaScript代碼將更新用戶界面。

您正在嘗試更新Web方法的用戶界面。 那行不通。 如果需要執行此操作,請使用帶有UpdatePanel的回發或異步回發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM