我有一个带有可变数量复选框的复选框,我正在做类似的事情:
protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
for (int j = 0; j < CheckBoxList1.Items.Count; j++)
{
//LabelTest.Text = "Something"; It works here
if (CheckBoxList1.Items[j].Selected)
{
//LabelTest.Text = "Something 2"; It doesn't work here
TextBoxTest.Text = CheckBoxList1.Items[j].Text;
LabelTest.Text = CheckBoxList1.Items[j].Value;
}
}
}
当我选中一个方框时,我的页面上会显示“Something”,但其余的则没有。 我试着像我这样写“if”:
if (!CheckBoxList1.Items[j].Selected)
这样做,当我选中一个方框时,我的TextBoxTest显示“106”,这是我拥有的复选框总数,但不是复选框的数量。
我的CheckBoxList1有一个真正的自动回送。
感谢您的帮助,抱歉我的英语不好。
答案 0 :(得分:3)
对于复选框,您应使用属性Checked
而不是Selected
:
if (CheckBoxList1.Items[j].Checked)
但我现在无法测试。
答案 1 :(得分:3)
问题在于您向CheckBoxList添加项目的方式。您在另一个主题中提供了该代码。你应该做的是将该代码包含在其中:
if (!IsPostBack)
{
... your code to add items to the CheckBoxList
}
否则,您将在每个回发上重新创建列表,其中Selected属性的默认值为false。
答案 2 :(得分:1)
这应该有用,我已经测试了它
protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
{
foreach (ListItem item in CheckBoxList1.Items)
{
if (item.Selected == true)
{
//Response.Write(item.Value);
LabelTest.Text = item.Value;
}
}
}
答案 3 :(得分:1)
您在哪里添加复选框列表项?希望那是在页面加载中。
页面加载:
private void Page_Load()
{
if (!IsPostBack)
{
// load only fist time
LaodCheckBoxList();
}
}
因为你为checkboxlist启用了autopostback true它会回发并重新创建所有列表项,你将失去选择状态。
答案 4 :(得分:1)
据我所知,您的代码应该可行。 尝试使用foreach
更改for循环foreach (ListItem itm in CheckBoxList1.Items)
{
if (itm.Selected == true)
{
TextBoxTest.Text = itm.Text;
LabelTest.Text = itm.Value;
}
}