string qxsz1 = "";
string qxsz2 = "";
string qxsz3 = "";
string qxsz4 = "";
for (int j = 0; j < CheckBoxList1.Items.Count; j++)
{
if (CheckBoxList1.Items[j].Selected == true)
qxsz1 += CheckBoxList1.Items[j].Value + ",";
}
for (int j = 0; j < CheckBoxList2.Items.Count; j++)
{
if (CheckBoxList2.Items[j].Selected == true)
qxsz2 += CheckBoxList2.Items[j].Value + ",";
}
for (int j = 0; j < CheckBoxList3.Items.Count; j++)
{
if (CheckBoxList3.Items[j].Selected == true)
qxsz3 += CheckBoxList3.Items[j].Value + ",";
}
for (int j = 0; j < CheckBoxList4.Items.Count; j++)
{
if (CheckBoxList4.Items[j].Selected == true)
qxsz4 += CheckBoxList4.Items[j].Value + ",";
}
string qx = qxsz1 + qxsz2 + qxsz3 + qxsz4 + qxsz5 + qxsz6 + qxsz7;
获取多个单选框选择的值 ,如何用一个循坏得到 qx ,谢谢
checkedListBox本身有SelectedItems属性,可以直接获取到全部选中的项
如果你能确定每个只会选择一个的话,那么直接
checkedListBox.SelectedItems[0]就是选中的项目
但是如果可以多选,你就只能循环了
毕竟这么多list不是同一个,行数也不一样,不可能使用同一个循环来做
如果行数都一样还可以合并
for (int i = 0; i < 4; i++)
{
for (int j = 1; j < (this.FindControl("CheckBoxList" +i) as CheckBoxList).Items.Count; j++)
{
if ((this.FindControl("CheckBoxList" + i) as CheckBoxList).Items[j].Selected == true)
qxsz7 += (this.FindControl("CheckBoxList" + i) as CheckBoxList).Items[j].Value + ",";
}
}
大佬,看看我这个思路可以吗
写了一个只用LINQ的示例,CheckedListBox
个数是动态的,先看运行效果:
示例核心代码:
private void btnGetValue_Click(object sender, EventArgs e)
{
var result = panel1
.Controls
.OfType<CheckedListBox>()
.Select(ck => ck.CheckedItems
.Cast<CheckedBoxItem>()
.Select(x => x.Value)
)
.Where(x => x.Any())
.Select(selected => string.Join(",", selected))
.ToList();
richTextBox1.Text = string.Join(",", result);
}