2011-02-25 30 views
0

這應該是最簡單的事情,但它不會工作。我有一個簡單的asp.net Listbox和事件OnSelectedIndexChanged我想啓動一個javascript函數。這適用於當我設置鏈接啓動相同的功能,但沒有爲此特定控件設置時。該行代碼如下:.net Listbox不會用JavaScript事件處理程序進行編譯?

<tr><td> 
    <asp:ListBox ID="ListBox1" runat="server" Width="250" 
    Height="600" OnSelectedIndexChanged="javascript:selectedIndexChanged()"> 
    </asp:ListBox> 
</td></tr> 

以下是編譯錯誤,我得到:

C:\ .. \ ManufInfo.aspx(171,84):錯誤 CS1026:)預計
c:\ .. \ ManufInfo.aspx(171,84):錯誤 CS1002:;預期
C:\ .. \ ManufInfo.aspx(171,84):錯誤 CS1525:無效表達術語 ':'
C:\ .. \ ManufInfo.aspx(171,84):錯誤 CS1026:)預計
c:\ .. \ ManufInfo.aspx(171,84):錯誤 CS1002:;預期
C:\ .. \ ManufInfo.aspx(171,84):錯誤 CS1525:無效表達術語 ':'
C:\ .. \ ManufInfo.aspx(171,85):錯誤 CS1002:;預計
c:\ .. \ ManufInfo.aspx(171,85):錯誤 CS1002:;預計
c:\ .. \ ManufInfo.aspx(171,107):錯誤 CS1002:;預期
C:\ .. \ ManufInfo.aspx(171107):錯誤 CS1525:無效表達術語 ')'
C:\ .. \ ManufInfo.aspx(171107):錯誤 CS1002:;預計
C:\ .. \ ManufInfo.aspx(171107):錯誤 CS1525:無效的表達術語 ')'

到底是什麼回事? ;)可能是一個n00b的錯誤,但我認爲我拿起jscript足夠了解,應該工作...

感謝任何人誰可以指出我在正確的方向!

回答

1

OnSelectedIndexChanged不適用於JavaScript處理程序。嘗試這種上的Page_Load

ListBox1.Attributes.Add("onclick", "selectedIndexChanged()"); 
+0

啊,所以這完全是一個n00b的錯誤。但我也通過設置來完成它,不建議這麼做嗎? – Alex 2011-02-25 14:03:20

+0

「OnClick」標記適用於某些控件。一般建議在頁面加載時在後面的代碼中附加JavaScript函數,以便您可以使用ClientId來處理需要在JavaScript中使用的任何控件引用。這是一個最佳實踐,因爲這是一個很好的開發習慣,而不是適用於您的具體示例的技術限制。 – Toby 2011-02-25 14:25:53

1

該雲在OnSelectedIndexChanged屬性的值必須是在代碼後面的方法的名稱(或碼旁邊),該EventHandler委託的簽名,其中執行對匹配發回。

SOE提供了將javascript onclick事件添加到控件的正確方法。

1

此屬性專爲ASP.Net事件而設計,不適用於客戶端事件處理。

控制呈現這樣後,您可以將一個事件處理程序:

document.getElementById('<%=ListBox1.ClientID %>').onChange = function(){ 
    // your selectedIndexChanged logic goes here 
}; 
+0

@lucuma:感謝編輯:-) – Peter 2014-02-27 13:13:13

1

OnSelectedIndexChanged是服務器端。不會觸發JavaScript,它會引用一個代碼隱藏方法。