我在做测试的时候,就是当我点击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>");
}
}
}
这是我前台代码<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>");
}
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货