c# - CheckboxList on deselect 从项目符号列表中删除项目
问题描述
嗨,我有这段代码,我将复选框的选定值映射到项目符号列表,到目前为止,当我选择值时它工作正常 - 它相应地映射到项目符号列表。但是,当用户取消选择该值时,我有点挣扎。我希望它相应地更新项目列表。有什么帮助吗?
这是代码:
public List<string> elements = new List<string>();
protected void checkList_SelectedIndexChanged(object sender, EventArgs e)
{ foreach(ListItem item in checkList.Items)
{
if (item.Selected)
{
elements.Add(item.Text);
}
else {//Should this else triger the deletion of the elements in the list?
}
}
foreach (object o in elements)
{ int exists = 0;
for (int i = 0; i < BullList.Items.Count; i++)
{
if(BullList.Items[i].ToString() == o.ToString())
{
exists++;
}
}
if(exists == 0)
{
BullList.Items.Add(o.ToString());
}}}
protected void checkList_DataBound(object sender, EventArgs e)
{
for (int i = 0; i < BullList.Items.Count; i++)
{
foreach (ListItem item in checkList.Items)
{
if (BullList.Items[i].ToString() == item.ToString())
{
item.Selected = true;
}
else
{
}}}}
DOM 元素:
<asp:DropDownList AutoPostBack="true" ID="DropDownJobs" runat="server" Width="390px" Height="42px" Font-Names="Roboto" Font-Size="25px" DataSourceID="jobsDrop" DataTextField="MainJob" DataValueField="IDKey"></asp:DropDownList>
<asp:CheckBoxList OnDataBound="checkList_DataBound" AutoPostBack="true" ID="checkList" runat="server" OnSelectedIndexChanged="checkList_SelectedIndexChanged" DataSourceID="SortedListJobs" DataTextField="SubJobFamily" DataValueField="SubJobFamily" Width="406px">
<asp:ListItem>
</asp:ListItem>
</asp:CheckBoxList>
<h6 class="List">These jobs have been selected:</h6>
<asp:BulletedList runat="server" ID="BullList" CssClass="bullList"></asp:BulletedList/>
解决方案
就像您正在添加项目以BulletedList
创建list
. deselect item
然后将其从BulletedList
. 像下面
public List<string> elements = new List<string>();
public List<string> deselect = new List<string>();
protected void checkList_SelectedIndexChanged(object sender, EventArgs e)
{ foreach(ListItem item in checkList.Items)
{
if (item.Selected)
{
elements.Add(item.Text);
}
else
{
deselect.Add(item.Text);
}
}
foreach (object o in elements)
{ int exists = 0;
for (int i = 0; i < BullList.Items.Count; i++)
{
if(BullList.Items[i].ToString() == o.ToString())
{
exists++;
}
}
if(exists == 0)
{
BullList.Items.Add(o.ToString());
}
}
foreach (object o in deselect)
{
for (int i = 0; i < BullList.Items.Count; i++)
{
BullList.Items.Remove(o.ToString());
}
}
}
推荐阅读
- java - 如何用 Python 为用 Java 编写的 gRPC 服务编写 gRPC 客户端
- git - 恢复特定的 git 提交和依赖于它们的所有后续提交
- mysql - MySQL ERROR 2026 - SSL 连接错误 - Ubuntu 20.04
- mysql - SQL - 从大型数据集中返回多条记录中的最新记录
- php - Laravel 避免子表中的重复条目
- c++ - 需要对未初始化的变量进行一些澄清
- python - 在 Mac 上安装 Tkinter 以在 Pycharm 上使用
- java - 使用 Hive 的 Spark,无法使用 Hive 支持实例化 SparkSession,因为找不到 Hive 类
- mysql - 在列中创建非零天的运行总计
- javascript - 笑话:函数中的模拟类方法