移动列表框中的项目并在服务器端捕获
本文关键字:服务器端 项目 列表 移动 | 更新日期: 2023-09-27 18:00:33
我正试图使用jQuery代码在两个列表框之间移动项目
function move_list_items(sourceid, destinationid) {
$("#" + sourceid + " option:selected").appendTo("#" + destinationid);
}
//this will move all selected items from source list to destination list
function move_list_items_all(sourceid, destinationid) {
$("#" + sourceid + " option").appendTo("#" + destinationid);
}
我的列表框代码是这样的
<asp:ListBox ID="lstFirst" runat="server" Width="300px" Height="250px" SelectionMode="Multiple"></asp:ListBox>
<tr>
<td>
<p align="center">
<input id="btnRight" type="button" value=">" onclick="move_list_items('lstFirst','lstSecond');" />
</p>
<p align="center">
<input id="btnLeft" type="button" value="<" onclick="move_list_items('lstSecond','lstFirst');" />
</p>
<p align="center">
<input id="btnRightAll" type="button" value=">>" onclick="move_list_items_all('lstFirst','lstSecond');" />
</p>
<p align="center">
<input id="btnLeftAll" type="button" value="<<" onclick="move_list_items_all('lstSecond,'lstFirst');" />
</p>
</td>
</tr>
<asp:ListBox ID="lstSecond" runat="server" Width="300px" Height="250px" SelectionMode="Multiple"></asp:ListBox>
项目移动良好,但我无法使用lstSecond.items访问lstSecond列表框中移动的项目。计数为零。如何从codebehind访问添加的项目以进行保存?
问题是你的服务器端控件(ListBox)不会从客户端html读取它的状态,它总是在服务器端填充(从Markup或Code-behind)。
因此,实现目标的一种方法是,一旦您通过jQuery更改项目,就将(每个列表框的)项目存储在客户端的隐藏字段中。然后在服务器端,您需要根据隐藏字段中显示的值(如果有的话)填充列表框。