我在做测试的时候,就是当我点击CheckBoxList的某一项的时候触发onselectedindexchanged里面的事件,但是我做的时候发现完全不是那么回事,彻底被搞糊涂了。onselectedindexchanged事件里面得到的CheckBoxList的SelectedItem根本不是我点击的那个选项,而是按照某种我不理解的方式顺序选中的,真的糊涂了。希望有明白的朋友不吝指教,为我指点迷津。以下是我写的代码,实在搞不明白了来这里请大神们教诲。
这是我前台代码<asp:CheckBoxList ID="Chb" runat="server" RepeatDirection="Horizontal" 
            RepeatColumns="3" AutoPostBack="True" 
            onselectedindexchanged="Chb_SelectedIndexChanged">
        </asp:CheckBoxList>
这里是后台代码protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)
        {
            bind();
            bindrole();
        }
    }
    //绑定CheckBoxList数据源
    public void bind()
    {
        Chb.DataTextField = "UserName";
        Chb.DataValueField = "ID";
        Chb.DataSource = cs.getdd();
        Chb.DataBind();
    }
    //根据数据库中的值绑定CheckBoxList是否被选中
    public void bindrole()
    {
        for(int i=0;i<Chb.Items.Count;i++)
        {
            int id = Convert.ToInt32(Chb.Items[i].Value);
            bool role = cs.GetEnableByID(id);
            if(role)
            {
                Chb.Items[i].Selected = true;
            }
            else
            {
                Chb.Items[i].Selected = false;
            }
        }
    }
 //处理事件
 protected void Chb_SelectedIndexChanged(object sender, EventArgs e)
    {
        //获取点击的项所绑定的值
        int id = Convert.ToInt32(Chb.SelectedValue);
        //获取数据库中的数据,类型为bit
        if(cs.GetEnableByID(id))
        {
            int a=cs.SetEnable(id, 0);
            if (a>0)
            {
                bind();
                bindrole();
            } 
            else
            {
                Response.Write("<script type='text/javascript'>alert('修改失败');</script>");
            }
        }
        else
        {
            int b=cs.SetEnable(id, 1);
            if (b>0)
            {
                bind();
                bindrole();
            } 
            else
            {
                Response.Write("<script type='text/javascript'>alert('修改失败');</script>");
            }
        }
    }