我正在尝试使用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列表框中访问移动的项目。计数为零。如何从代码隐藏中访问添加的项目以进行保存?
答案 0 :(得分:0)
问题是你的服务器端控件(ListBox)没有从客户端html读取它的状态,它总是在服务器端填充(从Markup或Code后面)。
因此,实现目标的一种方法是,只要您通过jQuery更改它们,就会将(每个列表框的)项目存储在客户端隐藏字段中。然后在服务器端,您需要根据隐藏字段中显示的值(如果有)填充列表框。