更改VB列表框'onclick'事件上的文本框

时间:2012-07-31 13:26:36

标签: javascript asp.net vb.net

我目前正在尝试使用列表框中的“onclick”事件更新文本框。

基本上,在设置'onclick'事件属性时,我需要传递所选的列表框值。但是,正在发生的问题是,当第一次构建所有内容时,没有选定的值,因此它会尝试传递null和错误。

一些代码......

//listbox attribute creation...
Me.listbox.Attributes("onclick") = "javascript:board_click_button('" & Me.listbox.SelectedItem.Text & "');"

如果我将SelectedValue设置为特定索引,则每次用户单击时,无论选择什么,硬编码索引值都将始终返回。

有没有办法让'onclick'做我需要的东西呢?我没有发布任何进一步的代码,因为我认为它没有帮助,但我可以,如果它需要。感谢。

1 个答案:

答案 0 :(得分:1)

您需要了解服务器端和客户端之间的区别。

服务器端是服务器上发生的所有事情(例如ASP,ASP.NET,PHP),用于创建发送到浏览器的HTML。它还处理用户提交内容(回发后)时浏览器返回的信息。

客户端是收到HTML后在浏览器上发生的所有事情,或者用户在页面上执行某些操作(如单击元素)。

这个代码是在服务器上创建的,因此就浏览器而言,text参数永远不会改变(为了可见性而拆分线路)......

Me.listbox.Attributes("onclick") = "javascript:board_click_button('" 
                                   & Me.listbox.SelectedItem.Text & "');"

浏览器将收到类似的内容(简化了可见性)......

<select onclick="javascript:board_click_button('hello world');" ...

相反,我认为你想要的是......

Me.listbox.Attributes("onclick") = "board_click_button(this.options[this.selectedIndex].text);"

这将允许javascript使用this变量(导致事件的对象,在本例中为<select>)来查找当前选定的项目文本。< / p>

(另请注意,您不需要将javascript:放在onclick类型事件的开头 - 浏览器已经知道它是javascript。如果你在javascript中使用javascript,你只需要把它放进去href代码的<a>。)

<强>更新

这是一个非常快速的测试,对我来说正常工作(在警告框中显示,已选择的项目中的文字)......

<asp:ListBox runat="server" onclick="alert(this.options[this.selectedIndex].text);">
  <asp:ListItem Value="1">one</asp:ListItem>
  <asp:ListItem Value="2">two</asp:ListItem>
  <asp:ListItem Value="3">three</asp:ListItem>
</asp:ListBox>