从客户端将一个ListBox控件中的项添加/删除到ASP.NET中的另一个ListBox控件

时间:2010-10-10 18:25:03

标签: javascript asp.net jquery viewstate listboxitem

我正在将一个ASP.NET ListBox控件中的itmes从客户端移动到另一个ListBox控件。它适用于客户端,但当我尝试计算项目时 在服务器端的目标ListBox,它总是一无所获。下面是用于从ListBox控件添加/删除项目的jQuery代码。

<script type="text/javascript">
    $(document).ready(function(addToList) {
    // to move selected item from lbSource to lbDestination
    $("#add").click(function() {
    $("#lbSource  option:selected").appendTo("#lbDestination").attr("selected", false);
    });

    // to remove selected item from lbDestination to lbSource
    $("#remove").click(function() {
    $("#lbDestinaion option:selected").appendTo("#lbSource").attr("selected", false);
    });
});
</script>

我知道我们可以从服务器端添加/删除ListBox中的项目。但我想从客户端完成它。

为什么在从代码隐藏中计算项目时,目标ListBox中没有任何内容,尽管已经从客户端添加了项目。

3 个答案:

答案 0 :(得分:0)

对控件进行的Javascript修改将不会显示在服务器端。我认为这与asp.net生活圈有关。但它显示在隐藏字段中。 因此,如果要在其他隐藏字段中添加信息,则可以在服务器端跟踪它,例如,您可以在隐藏字段中保存选项的ID或名称。

答案 1 :(得分:0)

即使它在客户端显示,它也没有提交给服务器,服务器中的值也没有更新。你是否正在执行任何更新列表的操作,比如运行update db sql ??

如果您想在提交页面时使用Ajax。

答案 2 :(得分:0)

我担心您需要使用更新面板来允许服务器跟踪控件的视图状态更改。

了Serverside:

protected void btnMove_OnClick(object sender, EventArgs Args)
{
    ListItem SourceItem = bSource.SelectedItem;

    lbDestination.Items.Add(SourceItem );
    lbSource.Items.Remove(SourceItem);
}

标记式:

<asp:UpdatePanel ChildrenAsTriggers="true" runat="Server">
    <ContentTemplate>

    <asp:ListBox ID="lbSource" runat="server"/>
    <asp:Button ID="btnMove" OnClick="btnMove_OnClick" runat="server"/>
    <asp:ListBox ID="lbDestination" runat="server"/>

    </ContentTemplate>
</asp:UpdatePanel>
相关问题