【问题标题】:Get the item a user unselects in a ASP CheckBoxList获取用户在 ASP CheckBoxList 中取消选择的项目
【发布时间】:2012-04-19 15:01:20
【问题描述】:

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

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

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

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

谢谢, 迈克尔

【问题讨论】:

  • stackoverflow.com/questions/3614664/…> 的可能重复项

标签: c# asp.net


【解决方案1】:

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

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

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;  
}

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

【讨论】:

  • 感谢 Imran,这行得通...奇怪的是 .Net 本身不支持它。
  • 刚刚找到这个相关/相同的项目:stackoverflow.com/questions/3655068/…
  • 是否可以区分用户选择项目和用户取消选择项目?基本上我需要根据用户选择或取消选择来执行不同的代码路径 - 这是一个非常愚蠢的问题,所以请不要浪费你的时间 - 谢谢!
猜你喜欢
  • 1970-01-01
  • 2012-02-07
  • 1970-01-01
  • 2014-02-06
  • 1970-01-01
  • 2013-05-26
  • 1970-01-01
  • 2015-10-19
  • 1970-01-01
相关资源
最近更新 更多