【问题标题】:CheckboxList on deselect remove the item from Bulleted listCheckboxList on deselect 从项目符号列表中删除项目
【发布时间】:2018-12-11 20:12:11
【问题描述】:

您好,我有这段代码,我将复选框的选定值映射到项目符号列表,到目前为止,当我选择值时它工作正常 - 它相应地映射到项目符号列表。但是,当用户取消选择该值时,我有点挣扎。我希望它相应地更新项目列表。有什么帮助吗?

代码如下:

 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/>

【问题讨论】:

  • 代码现在做了什么?你想让它做什么呢?
  • 它将选中的复选框项添加到项目符号列表中我希望它在取消选中后也将其删除

标签: c# asp.net list for-loop checkbox


【解决方案1】:

就像您向BulletedList 添加项目一样,创建listdeselect 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());
            }
        }
     }

【讨论】:

  • 这个解决方案有效,但是出现了奇怪的行为:当列表中的最后一项即将被删除时,复选框事件被忽略......知道为什么吗?
  • 然后一旦选择了一个新的插入值,它就会替换上一个操作中必须删除的那个
  • @whiterabbitj 您的第一条评论抱歉我无法重现您的问题...第二条评论我无法理解您的问题...请解释更多...我只是回答您在问题中提出的问题。 ..您的整个页面有很多控件和大量代码...其他代码可能会影响您的复选框和项目符号列表。在您绑定可能影响行为的复选框列表的位置...始终将您的控件绑定在 page_loadIf (!Ispostback) 条件
  • 好的,干杯。不,我尝试删除一个项目,如果它是列表中的最后一个项目,它会留在那里。除非您勾选其他项目的框,否则该值将被替换为选定的值。
猜你喜欢
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-07
  • 2010-10-09
  • 1970-01-01
  • 2022-12-20
  • 2014-04-25
相关资源
最近更新 更多