2013-11-27 54 views
0

我有下面的代碼 -加載JavaScript函數

protected string Term 
    { 
     get { return this.ViewState["Term"] != null ? (string)this.ViewState["Term"] : ""; } 
     set { this.ViewState["Term"] = value; } 
    } 

然後設置Term -

public void populateTerm() 
    { 

     Term = "Test";  
     ScriptManager.RegisterStartupScript(this, GetType(), "term","useTerm()", true); 

    } 

然後在Javascript中可使用期限 -

function useTerm() { 
        var Term = <%= Term %>; 
        // use Term 
       } 

這工作正常當頁面正在重新加載按鈕點擊時發出populateTerm()。不過,由於整個頁面在按鈕單擊(僅更新面板)時沒有重新加載,因此我已將按鈕移動到updatePanel,這意味着useTerm()未被調用且<%= Term %>爲空。

如果我刪除updatePanel代碼,它工作正常。我怎樣才能得到這個與updatePanel一起工作?

回答

0

假設函數useTerm在您的aspx頁面中,您可以將該腳本塊移動到UpdatePanelContentTemplate之內。

另一種方法是使長期被傳遞作爲參數來改變JavaScript函數:

function useTerm(term) { 
    // use term 
} 

,然後將其與Term最新值致電:

public void populateTerm() 
{ 

    Term = "Test";  
    string script = string.Format("useTerm('{0}');", Term); 
    ScriptManager.RegisterStartupScript(this, GetType(), "term", script, true); 

} 
+0

添加腳本塊沒有工作如何第二次! – Ebikeneser