在许多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
。感谢
是的,这是可能的。根据您的结构,您只需执行以下操作:
// 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");