我是ASP.Net的新手,我有以下疑问:
有没有办法在更改ListBox的选定项时更新TextBox的内容?
我有这个:
<asp:ListBox ID="myListBox" runat="server" Width="200px"></asp:ListBox>
<asp:TextBox ID="myTextBox" runat="server" Width="200" />
ListBox上的项目是在Page_Load中添加的字符串
基本上,我想将所选项目放在TextBox中,而不必进行PostBack并在代码隐藏中进行此操作(为了提高效率)。
提前谢谢!
答案 0 :(得分:1)
是的,当然。这就是客户端编程的用途(JavaScript)。
当服务器将ListBox
呈现为HTML时,它将转换为HTML select元素。所以你可以使用这段代码:
<asp:ListBox ID="myListBox" runat="server" Width="200px"></asp:ListBox>
<asp:TextBox ID="myTextBox" runat="server" Width="200" />
<!-- Below we're adding the reference to jQuery, which is publicly hosted on a CDN -->
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
<!-- Here's where our JavaScript is -->
<script type="text/javascript">
$(function(){
$('#<%=myListBox.ClientID %>').change(function(){ //when the select value of the list box changes, we're going to call the below code
$('#<%=myTextBox.ClientID %>').val($('#<%=myListBox.ClientID %>').val()); // Set the value of the text box to the value of the list box.
});
});
</script>
请注意,我使用的是jQuery库,这是一个非常流行的JavaScript框架,可以让客户端编码更轻松。
注意我使用特殊语法将ClientID
和ListBox
的{{1}}嵌入到JavaScript中。这是因为JavaScript在客户端运行,TextBox
和ListBox
的ID可以根据TextBox
从服务器更改为客户端(这是控件已经指定了许多Web窗体开发人员的东西。嵌入ClientIDMode
以确保客户端上的JavaScript中使用的ID与客户端上select元素的ID匹配。