前台定义了14个checkbox控件,现在用户要选择6个控件来进行投票(只能选6个,不能多不能少),选上后点击投票按钮,被选中的人数据库票数就加1。
我自己写了段代码,运行后虽然没有报错,可是却得不到我想要的结果。
拜托各位高手,帮忙看下,或者写段代码分享下。再次感谢!
我的代码:
- C# code
protected void Button1_Click(object sender, EventArgs e) { //投票防作弊 if (Session["UserID"] == null ) { Response.Write("<script language=javascript>alert('您还未登录');</script>"); Response.Redirect("<script>window.location.href='Default.aspx';</script>"); } else { if (Convert.ToBoolean(Session["Role"]))//已经投过票 { Response.Write("<script language=javascript>alert('你已经成功投过票,不能重新投票!');</script>"); return; } else//还没投过票,执行投票操作,票数加1 { int num1 = 0; foreach (Control c in this.Controls) { if (c is CheckBox && ((CheckBox)c).Checked) { num1++; } } if (num1 > 0) { if (num1 < 6) { Response.Write(CC.MessageBox(string.Format("共有{0}人被选中,请继续选足6人", num1.ToString()))); } else if (num1 == 6) { int i = 1; string[] strarr = new string[5]; int j = 0; foreach (Control a in this.Controls) { if (a is CheckBox && ((CheckBox)a).Checked&&(i < 15)) { string P_Str_voteItemID = ((CheckBox)a).ID; string P_Str_cmdtxt = "update tb_VoteItem set voteTotal=voteTotal+1 where voteItemID=" + P_Str_voteItemID; strarr[j] = Convert.ToString(i); CC.ExSql(P_Str_cmdtxt); i++; j++; } else { i = i + 1; } } string ttt = string.Join(",", strarr ); string P_Str_cmdtxt1 = "update tb_User set Role=1 where UserID=" + M_Str_voteID; string P_Str_cmdtxt2 = "update tb_User set Choose= '" + ttt + "' where UserID=" + M_Str_voteID; string P_Str_cmdtxt3 = "update tb_User set VoteDate='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "' where UserID=" + M_Str_voteID; CC.ExSql(P_Str_cmdtxt1); CC.ExSql(P_Str_cmdtxt2); CC.ExSql(P_Str_cmdtxt3); Response.Write("<script>alert('投票成功,感谢您的支持!');</script>"); } else { Response.Write(CC.MessageBox("您选择的选手已经超过6名")); } } else { Response.Write(CC.MessageBox("请选择参赛选手")); } } } }
------解决方案--------------------------------------------------------
达不到你要的效果,指的是哪一部分逻辑出错呢?设置断点先确定哪一部分的问题。在我看来,这一句有点问题: