2011-02-25 67 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,它会引用一个代码隐藏方法。