【发布时间】:2012-12-12 05:50:50
【问题描述】:
我有两个列表框,我试图将多个值从一个传递到另一个。 asp.net代码
<asp:UpdatePanel ID="userButtonPanel" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:LinkButton Text=">>" ID="lbtn_add" CssClass="button advButtons addRemButton"
runat="server" OnClick="addMappedUser_Click" />
<asp:LinkButton Text="<<" ID="lbtn_remove" CssClass="button advButtons addRemButton"
runat="server" OnClick="removeMappedUser_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
<div>
<asp:Label ID="lbl_MappedUSers" Text="Mapped Users" runat="server" />
<asp:ListBox ID="listMappedUsers" runat="server" SelectionMode="Multiple" CssClass="listboxMappedUsers" />
</div>
</div>
</div>
<input id="cbUserList" type="hidden" runat="server" value="" />
<input id="cbUserRoleID" type="hidden" runat="server" value="" />
</ContentTemplate>
</asp:UpdatePanel>
在addMappedUser_Click 的点击事件上,我评估 listAllUsers 列表框以查看选择了哪些项目并创建这些项目的列表
protected void addMappedUser_Click(object sender, EventArgs e)
{
List<ListItem> selectedItems = listAllUsers.Items.Cast<ListItem>().Where(i => i.Selected).ToList();
List<AddedUsers> newusers = new List<AddedUsers>();
foreach (var item in selectedItems)
{
AddedUsers au = new AddedUsers();
au.UserID = item.Value;
au.UserName = item.Text;
newusers.Add(au);
}
MoveSelectedItems(newusers, listAllUsers);
}
一旦创建该列表,它就会被传递给MoveSelectedItems Method
protected void MoveSelectedItems(List<AddedUsers> from, ListBox to)
{
if (from.Count == 0)
{
return;
}
SecurityUserRole sur = new SecurityUserRole();
ListItem item = new ListItem();
foreach (var i in from)
{
item.Value = i.UserID;
item.Text = i.UserName;
if (listAllUsers.Items.Contains(item))
{
listAllUsers.Items.Remove(item);
listMappedUsers.Items.Add(item);
}
sur.SecurityUserId = Convert.ToInt32(i.UserID);
sur.SecurityRoleId = Convert.ToInt32(RoleID);
MappedUser.Add(sur);
Session["MappedUser"] = MappedUser;
checkMappingButtons(listMappedUsers, listAllUsers);
editUserUpdatePanel.Update();
}
}
我遇到困难的地方是将用户添加到第二个列表框 (listMappedUsers.Items.Add) 当我设置断点时,我可以看到每个值都通过(例如“201”、“202”、“203”),但是当更新面板更新时,列表框只会列出 3 次 203。
有人可以帮助我了解我缺少什么以及为什么最后一个值是列表框中出现的唯一值,而不是以前的前辈?
提前致谢,
【问题讨论】: