欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » ASP.Net » 正文

热门阅读

获取CheckBoxList当前选择项索引

创建时间:2011年08月23日 19:52  阅读次数:(7475)
分享到:
今天在使用CheckBoxList控件时,突然发现该控件竟然未提供返回当前选中项的属性,比如当前选中项的索引等。它只是提供了获取或设置列表中选定项的最低序号索引,与最低序号索引对应的Text与Value,分别如下:
SelectedIndex --获取或设置列表中选定项的最低序号索引。
SelectedItem  --获取列表控件中索引最小的选定项。
SelectedValue --取列表控件中选定项的值,或选择列表控件中包含指定值的项。

现在假如我往页面上放了一个CheckBoxList控件,如下:
<form id="form1" runat="server" >
<asp:CheckBoxList ID="CheckBoxList1" runat="server" AutoPostBack="True" onselectedindexchanged="CheckBoxList1_SelectedIndexChanged" >
    <asp:ListItem Text="test1" Value="value1" ></asp:ListItem >
    <asp:ListItem Text="test2" Value="value2" ></asp:ListItem >
</asp:CheckBoxList >
</form >


我先是选中了第一项:在CheckBoxList1_SelectedIndexChanged事件中获取以上三个属性的值,分别是:
SelectedIndex --0。
SelectedItem.Text  --test1。
SelectedValue --value1。
这个是对的。

然后我又选中了第二项,注意,不要取消第一项的选中,然后再在CheckBoxList1_SelectedIndexChanged事件中获取以上三个属性的值,还分别是:
SelectedIndex --0。
SelectedItem.Text  --test1。
SelectedValue --value1。

这就不是我想要的结果了,其实我是想得到
SelectedIndex --1。
SelectedItem  --test2。
SelectedValue --value2。

找遍CheckBoxList中所有的属性与方法,都没能得到我想要结果。经过一翻研究,终于得到了自己想要的结果。就是利用回发过程中Request.Form["__EVENTTARGET"]中的值。我们都知道,在回发时ViewState["__EVENTTARGET"]中存储的是引发回发事件的对象的信息。在调试中,我查看了CheckBoxList的onselectedindexchanged回发事件中该Request.Form["__EVENTTARGET"]中的值是"CheckBoxList1$1",哈哈,最后面的1,不就是当前选中项的索引么。。

改写代码如下:
protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
  {
      string s = Request.Form["__EVENTTARGET"];
      int index = Convert.ToInt32(s.Substring(s.LastIndexOf("$") + 1));
      string selectText = this.CheckBoxList1.Items[index].Text;
      string selectValue = this.CheckBoxList1.Items[index].Value;
  }

其中:
index --当前选中项的索引
selectText --当前选中项的文件
selectValue --当前选中项的值

以上纯属个人经验,希望能对大家有所帮助。
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 11+3=? 的结果(结果是:14)
结  果: