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

时间:2015-07-16 19:50:19

标签: c# asp.net

我的页面中有很多CheckBoxList。是否可以通过Code Behind中的值来搜索单个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>

修改 要在问题上添加更多精确度:如何将ListItem的{​​{1}}值设置为选定内容,而不知道它属于哪个46。 感谢

5 个答案:

答案 0 :(得分:1)

是的,有可能。根据您的结构,您只需:

// 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("...");

答案 1 :(得分:0)

像这样使用recursive method

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);
     }
}

答案 2 :(得分:0)

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

import java.util.*;

public class Conver {
    public static void main(String[] args){
       amountToConvert();
       exchangeRate(); 
       convert();
    }

        public static double amountToConvert() {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter the amount you wish to convert...");
        double amount = input.nextDouble();
        return amount;
    }

    public static double exchangeRate(){
        Scanner input = new Scanner(System.in);
        System.out.println("Enter the currency you wish to convert from... ");
        String initialCurrency = input.next();
        System.out.println("Enter the currency you wish to convert from... ");
        String finalCurrency = input.next();
        System.out.println("How many " + initialCurrency + " makes one " + finalCurrency + "?");
        double rate = input.nextDouble();
        return rate;
    } 

    public static double convert(){
        int x = amount*rate;
        return x;
    }

    public void printResult(){
        System.out.println(x);
    }
}

答案 3 :(得分:0)

List<ListItem> skiValues = ski.Items.Cast<ListItem>()
    .Where(li => li == 'Search')
    .ToList();

答案 4 :(得分:0)

试试这个

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