3

我希望这相当简单,但我找不到/想出一个简单/智能的解决方案。

我有一个 CheckBoxList,它有一个 OnSelectedIndexChanged 事件。如果用户选择(检查)框中的项目,则触发该事件并执行后面的代码。简单的。

现在,如果用户取消选中一个框,我需要在后台做一些工作,但问题是当用户然后取消选择列表中的一个项目时,它会触发事件,但在事件的代码中,列表不保留指向哪个项目的指针用户刚刚取消选择。我觉得这很奇怪,并且认为我一定遗漏了一些明显的东西,尽管各种搜索都没有产生任何具体的结果。

我想我可以在检查的项目后面的代码中维护一个列表,并且每次触发事件时找出已删除的内容,但如果有更简单的解决方案,这似乎有点矫枉过正。

谢谢,迈克尔

4

1 回答 1

4

是的,没有直接的方法来找到取消选中的项目,即使是通过投射发件人

以下是一个棘手的代码,它为您提供导致事件触发的项目索引

protected void checkboxlist_SelectedIndexChanged(object sender, EventArgs e)
{
        CheckBoxList list = (CheckBoxList)sender;
        string[] control = Request.Form.Get("__EVENTTARGET").Split('$');
        int idx = control.Length - 1;
        string sel = list.Items[Int32.Parse(control[idx])].Value;  
}

获得索引后,您可以选择项目并编写代码。

于 2012-04-19T15:18:02.793 回答