从CheckBox列表中删除项目
这是主要forms:
代码forms:
protected void Button1_Click(object sender, EventArgs e) { for (int i = 0; i < chkItems.Items.Count; i++) { if (chkItems.Items[i].Selected == true) { chkItems.Items.RemoveAt(i); } } }
在我的表单中,我想删除用户已签出的项目。 但是,如果我选择3个项目,则在用户点击删除后,表单上将至少保留一个项目。 我错过了什么?
您需要列出要删除的所有项目,然后逐个删除它们。
例如
List toBeRemoved = new List (); for(int i=0; i
在您的示例中,您将删除项目,这将更改您尚未循环的其余项目的索引。 这将导致您在循环时“丢失”项目。 我想这就是问题的原因。
尝试向后循环,例如
protected void Button1_Click(object sender, EventArgs e) { for (int i = chkItems.Items.Count -1 ; i >= 0; i--) { if (chkItems.Items[i].Selected == true) { chkItems.Items.RemoveAt(i); } } }
你可以这样做。
> for (int i = 0; i < chkItems.Items.Count; i++) { if (chkItems.Items[i].Selected == true) { ListItem li =new ListItem(); li.Text = chkItems.Items[i].Text; li.Value = chkItems.Items[i].Value; chkItems.Items.Remove(li); } }