当asp:ListBox更改所选项时更新asp:TextBox

时间:2015-03-12 22:40:45

标签: c# asp.net textbox listbox

我是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并在代码隐藏中进行此操作(为了提高效率)。
提前谢谢!

1 个答案:

答案 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框架,可以让客户端编码更轻松。

注意我使用特殊语法将ClientIDListBox的{​​{1}}嵌入到JavaScript中。这是因为JavaScript在客户端运行,TextBoxListBox的ID可以根据TextBox从服务器更改为客户端(这是控件已经指定了许多Web窗体开发人员的东西。嵌入ClientIDMode以确保客户端上的JavaScript中使用的ID与客户端上select元素的ID匹配。