C# 复选框列出选中的值

C# 复选框列出选中的值,c#,asp.net,C#,Asp.net,我有一个复选框列表,其中有3项。我想将复选框列表中的所有选中值合并成一个字符串。我尝试了以下代码,但没有给出正确的结果。 有人能帮我吗 <asp:checkboxlist id="interestedIN" runat="server" repeatlayout="table" cellspacing="3" cellpadding="3" Font-Size="12px"> <asp:ListItem id= "social" runat="server" te

我有一个复选框列表,其中有3项。我想将复选框列表中的所有选中值合并成一个字符串。我尝试了以下代码,但没有给出正确的结果。 有人能帮我吗

<asp:checkboxlist id="interestedIN" runat="server" repeatlayout="table"
    cellspacing="3" cellpadding="3" Font-Size="12px">
  <asp:ListItem id= "social" runat="server"  text=" Sociology" Selected="false" />
  <asp:ListItem id="zoo" runat="server"  text=" Zoology " Selected="false" />
  <asp:ListItem id="math" runat="server"  text=" mathematics " Selected="false" />
</asp:checkboxlist>
输出:如果用户选择Society和Zoology,我希望输出为Society,Zoology 但我上面的代码给出了以下结果:社会学、社会学。

使用以下方法:

Boolean addSeperator = false;

foreach (ListItem li in interestedIN.Items)
{

    if (addSeperator)
    {
        interestIN += ", ";
        addSeperator = false;
    }
    if (li.Selected)
    {
        interestIN += li.Text;
        addSeperator = true;
    }
}

我创建了一个带有此属性的自定义复选框列表。把它放在一个控件中很好,这样你就不必每次都写代码了。自定义控件允许您引用四个属性:

SelectedValuesString–以逗号分隔的选定值字符串。 SelectedValuesIntegers–所选值的整数列表。 SelectedValuesAsString–选定值的字符串列表。 SelectEditemTextAsString–所选项目文本的字符串列表。 这是SelectedValuesAsString属性

public string SelectedValuesString
{
    get
    {
        return String.Join(",",this.Items.Cast<ListItem>().Where(i => i.Selected).Select(i=>i.Value));
    }
}

要查看自定义复选框列表控件上的帖子,请参见

希望下面的函数将帮助您获得结果

for (int i = 0; i < interestedIN.Items.Count; i++)
{
   if (interestedIN.Items[i].Selected)
   {
       values += interestedIN.Items[i].Value + ",";
   }
}

values = values.TrimEnd(',');

我知道这个问题由来已久,但我有一个解决办法。您的问题是,您正在查看列表控件的选定项,该项可能是您所需要的,也可能不是您所需要的,这取决于此项运行时列表控件的状态。您需要查看当前正在迭代的项目,并从中获取文本值

string interestIN = String.Empty;

foreach (ListItem li in interestedIN.Items)
{
    if (li.Selected)
    {
        interestIN += li.Text + ", ";
    }
}

我的代码有一个问题,最后一项后面会有一个逗号,但您可以找出如何去掉它。这将使您达到99%的目标。

对Narnian使用c扩展方法的优秀答案做了一点修改:

  public static class ExtendedCheckBoxList
{

    public static string SelectedValuesAsCommaDelimmittedString( this CheckBoxList thatCheckBoxList )
    {

        List<string> selectedValuesAsStrings = thatCheckBoxList.SelectedValuesAsStrings();

        string commaDelimmittedStringOfValues = String.Join( ",", selectedValuesAsStrings );

        return commaDelimmittedStringOfValues;
    }


    public static List<string> SelectedValuesAsStrings( this CheckBoxList thatCheckBoxList )
    {
            List<string> selectedValuesAsStrings = thatCheckBoxList
                                                                .Items
                                                                .Cast<ListItem>()
                                                                .Where( i => i.Selected )
                                                                .Select( i => i.Value )
                                                                .ToList();

            return selectedValuesAsStrings;
    }
}

决定今天推你超过1000。。。哈哈哈^_-
string interestIN = String.Empty;

foreach (ListItem li in interestedIN.Items)
{
    if (li.Selected)
    {
        interestIN += li.Text + ", ";
    }
}
  public static class ExtendedCheckBoxList
{

    public static string SelectedValuesAsCommaDelimmittedString( this CheckBoxList thatCheckBoxList )
    {

        List<string> selectedValuesAsStrings = thatCheckBoxList.SelectedValuesAsStrings();

        string commaDelimmittedStringOfValues = String.Join( ",", selectedValuesAsStrings );

        return commaDelimmittedStringOfValues;
    }


    public static List<string> SelectedValuesAsStrings( this CheckBoxList thatCheckBoxList )
    {
            List<string> selectedValuesAsStrings = thatCheckBoxList
                                                                .Items
                                                                .Cast<ListItem>()
                                                                .Where( i => i.Selected )
                                                                .Select( i => i.Value )
                                                                .ToList();

            return selectedValuesAsStrings;
    }
}