zoukankan      html  css  js  c++  java
  • 获取CheckBoxList当前选择项索引

    今天在使用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 --当前选中项的值

    以上纯属个人经验,希望能对大家有所帮助。

    转自http://www.cnblogs.com/shenyixin/archive/2011/11/23/2260582.html

  • 相关阅读:
    听说这是互联网时代100本必读书单,你看过几本?
    HttpURL连接远程serverGet和Post方式请求并返回数据
    如何才干高速成为优秀的程序猿
    android学习笔记NO.5
    Linux 内核开发
    scikit-learn:3.3. Model evaluation: quantifying the quality of predictions
    多个client与一个server端通信的问题
    [Android Studio] 取消引用库打包出现异常-- provided dependencies can only be jars
    2016.3.16__CSS3_选择器_边框_背景_蒙版mask__第九天
    Android Studio:Multiple dex files define Landroid/support/annotation/AnimRes
  • 原文地址:https://www.cnblogs.com/icycore/p/2422783.html
Copyright © 2011-2022 走看看