复选框列出了选中的值
本文关键字:复选框 | 更新日期: 2023-09-27 18:00:33
我有一个复选框列表,里面有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>
下面是实现的C#:
foreach (ListItem li in interestedIN.Items)
{
if (li.Selected)
{
interestIN = interestedIN.SelectedItem.Value + "," + interestIN;
}
}
输出:如果用户选择社会学和动物学,我希望输出为"社会学,动物学"但我上面的代码给了我以下的结果"社会学,社会学"。
我创建了一个带有此属性的自定义复选框列表。把它放在一个控件中很好,这样你就不必每次都写代码了。自定义控件允许您引用四个属性:
- SelectedValuesString–选定值的逗号分隔字符串
- SelectedValuesAsIntegers–选定值的整数列表
- SelectedValuesStrings–选定值的字符串列表
- SelectedItemTextAsStrings–所选项目的文本字符串列表
这是SelectedValuesAsString属性。
public string SelectedValuesString
{
get
{
return String.Join(",",this.Items.Cast<ListItem>().Where(i => i.Selected).Select(i=>i.Value));
}
}
要查看自定义复选框列表控件上的帖子,请参阅http://www.foliotek.com/devblog/extended-checkboxlist-control/
希望以下函数能帮助您获得结果
for (int i = 0; i < interestedIN.Items.Count; i++)
{
if (interestedIN.Items[i].Selected)
{
values += interestedIN.Items[i].Value + ",";
}
}
values = values.TrimEnd(',');
var selectedValues =
(from item in interestedIN.Items.Cast<ListItem>() where item.Selected select item.Text).ToArray();
var selectedValuesJoined = string.Join(",", selectedValues);
我知道这个问题很老,但我有一个解决方案。您的问题是,您正在查看列表控件的选定项目,这可能是您所需要的,也可能不是,具体取决于运行时列表控件的状态。您需要查看当前正在迭代的项,并从中获取文本值。
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;
}
}
使用以下内容:
Boolean addSeperator = false;
foreach (ListItem li in interestedIN.Items)
{
if (addSeperator)
{
interestIN += ", ";
addSeperator = false;
}
if (li.Selected)
{
interestIN += li.Text;
addSeperator = true;
}
}