在许多CheckBoxLists-asp.net中根据其值查找CheckBoxList项

本文关键字:查找 CheckBoxList 许多 CheckBoxLists-asp net | 更新日期: 2023-09-27 18:03:01

我的页面中有许多CheckBoxList。是否可以根据代码背后的值搜索单个ListItems

<div class="col-lg-2">
   <h4>Ski</h4>
   <asp:CheckBoxList ID="ski" runat="server">
       <asp:ListItem Text="Hauts" Value="43" runat="server"></asp:ListItem>
       <asp:ListItem Text="Bas" Value="45" runat="server"></asp:ListItem>
       <asp:ListItem Text="Sous-vêtements" Value="89" runat="server"></asp:ListItem>
   </asp:CheckBoxList>
</div>
<div class="col-lg-2">
   <h4>Ski de fonds</h4>
   <asp:CheckBoxList ID="skidefonds" runat="server">
       <asp:ListItem Text="Hauts" Value="42" runat="server"></asp:ListItem>
       <asp:ListItem Text="Bas" Value="46" runat="server"></asp:ListItem>
       <asp:ListItem Text="Sous-vêtements" Value="90" runat="server"></asp:ListItem>
   </asp:CheckBoxList>
</div>

编辑:为了增加问题的准确性:如何将作为46值的ListItem设置为Selected,而不知道它属于哪个CheckboxList。感谢

在许多CheckBoxLists-asp.net中根据其值查找CheckBoxList项

是的,这是可能的。根据您的结构,您只需执行以下操作:

// Selected:
IList<ListItem> selected = skidefonds.Items.Cast<ListItem>()
     .Where(i => i.Selected).ToList();

您还可以通过循环公开内容。

foreach(var item in skidefonds.Items)
{
     // Item will have all the attributes.
}

您可以通过执行以下操作来公开该值:

var result = skidefonds.Items.FindByValue("...");

或者,您可以在循环中迭代时直接访问item上的属性。

foreach(var item in skidefonds.Items)
     item.FindByValue("...");

使用这样的递归方法:

protected void Page_Load(object sender, EventArgs e)
{
   FindValue(this);
}
private void FindValue(Control ctrls)
{
     foreach (Control c in ctrls.Controls)
     {
         if (c is CheckBoxList)
         {
                CheckBoxList ff = c as CheckBoxList;
                for (int i = 0; i < ff.Items.Count; i++)
                {
                    if ((string)ff.Items[i].Value == "46")
                    {
                         ff.Items[i].Selected = true;
                    }
                }
          }
         else FindValue(c);
     }
}

您可以循环所有复选框列表,然后在该循环中查找所需的所有列表项。

foreach(Control cbxList in this.Controls)
{
    if(cbxList is CheckBox)
    {
        for (int i = 0; i < cbxList.Items.Count; i++)
        {
            if ((string)cbxList.Items[i] == value)
            {
                cbxList.SetItemChecked(i, true);
            }
        }
    }
}
List<ListItem> skiValues = ski.Items.Cast<ListItem>()
    .Where(li => li == 'Search')
    .ToList();

尝试这个

var item=ski.Items.FindByValue("yourvalue");