移动列表框中的项目并在服务器端捕获

时间:2011-06-28 21:14:51

标签: c# jquery

我正在尝试使用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列表框中访问移动的项目。计数为零。如何从代码隐藏中访问添加的项目以进行保存?

1 个答案:

答案 0 :(得分:0)

问题是你的服务器端控件(ListBox)没有从客户端html读取它的状态,它总是在服务器端填充(从Markup或Code后面)。

因此,实现目标的一种方法是,只要您通过jQuery更改它们,就会将(每个列表框的)项目存储在客户端隐藏字段中。然后在服务器端,您需要根据隐藏字段中显示的值(如果有)填充列表框。