我正在将一个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中没有任何内容,尽管已经从客户端添加了项目。
答案 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>