2010-08-30 65 views

回答

-1

我得到它的工作。

要確保你修改這個代碼,以佔母版內容識別前綴:

function LookUpStock() 
{ 
    var lb = document.getElementById("MASTERPAGEPREFIX_" + "ListBox1"); 
    var product = lb.options[lb.selectedIndex].text; 
    CallServer(product, ""); 
} 

function ReceiveServerData(rValue) 
{ 
    document.getElementById("MASTERPAGEPREFIX_" + "ResultsSpan").innerHTML = rValue; 
} 
+0

這種技術是不是一個好主意。從長遠來看,你的代碼將最終破裂。您應該使用@Rich Andrews提供的解決方案和建議。 – rtpHarry 2010-11-23 20:46:52

1

更具擴展性的方法是使用下面的語法(一個aspx面板更換ResultsSpan太)...

function LookUpStock() 
{ 
    var lb = document.getElementById('<%=ListBox1.ClientID%>'); 
    var product = lb.options[lb.selectedIndex].text; 
    CallServer(product, ""); 
} 

function ReceiveServerData(rValue) 
{ 
    document.getElementById('<%=ResultsSpan.ClientID%>').innerHTML = rValue; 
} 

這樣,如果MasterPage的名稱(或實際頁面)更改代碼仍然可以使用。

基本上,ASP.NET進程解析頁面並用客戶端上正確的控件名稱替換<%=%>指令。

如果您有嵌套控件,此方法也可以工作。在你的例子中,如果你有一個嵌套在另一個面板內的控件,呈現的ID可能看起來像MASTERPAGEPREFIX_CONTAINERCONTOLNAME_ListBox1,然後你的解決方法將失敗。

作爲一般原則,它通常被認爲是一個壞主意,在您的標記「硬碼」客戶端的標識 - 讓ASP.NET進程爲您處理