JS实现对gridview中的checkbox的选中个数记录,并在页面刷新时保持checkbox的状态...

案例描述:为防止checkbox勾选时页面刷新,给客户更好的体验,要求实现ASPX上实时记录checkbox的选中个数。因为页面其它查询时要刷新,所以还要记录checkbox的勾选状态。

实现代码:
ASPX页面核心代码:
<asp:Label ID="lblCount" runat="server" ForeColor="#C04000"></asp:Label>
<asp:GridView ID="GridView1" runat="server" >
      <asp:TemplateField>
                  <ItemTemplate>                
                  <asp:CheckBox ID="chb"  runat="server"  ToolTip='<%# Eval("QST_CODE") %>' οnclick="checkboxCount()" OnCheckedChanged="chb_CheckedChanged" /> 
                    </ItemTemplate>
      </asp:TemplateField>
 </asp:GridView>
<asp:HiddenField ID="hfQstCode" runat="server" />

JS代码:
<script language="javascript" type="text/javascript">   
  function checkboxCount()
 {
     var controlIndex;
     var element;
     var numberofControls;
     numberofControls = document.forms[0].length;
     var checkBoxCount = 0;
     for (controlIndex=0; controlIndex<numberofControls; controlIndex++)
     {   
         element = document.forms[0][controlIndex];
         if (element.type == "checkbox")
         {   
             if(element.checked == true)
             {   
                 checkBoxCount ++;
             }
         }
     }
     var tt = document.getElementById("lblCount");  
     tt.innerHTML = "已选数量:" + checkBoxCount;
 } 
    </script>

CS核心代码:
//OnCheckedChanged事件,记录选中的checkbox的ToolTip
protected void chb_CheckedChanged(object sender, EventArgs e)
    {
        string strQstCode = "";//用来记录选中的checkbox的ToolTip 
        foreach (GridViewRow row in GridView1.Rows)
        {
            if (((CheckBox)row.Cells[0].Controls[0].FindControl("chb")).Checked)
            {
                strQstCode += (((CheckBox)row.Cells[0].Controls[0].FindControl("chb")).ToolTip + ",");
            }
        }
        hfQstCode.Value = strQstCode;//存入Hidden中
    }

//页面刷新时,选中之前已勾选的checkbox in gridview1
        if (hfQstCode.Value != "")
        {
            string[] QstCodeArr = hfQstCode.Value.Split(',');
            CheckBox cbid = new CheckBox();
            for (int i = 0; i < QstCodeArr.Length; i++)
            {
                for (int j = 0; j < GridView1.Rows.Count; j++)
                {
                    CheckBox cbidObj = (CheckBox)this.GridView1.Rows[j].Cells[0].FindControl("chb");
                    if (cbidObj.ToolTip == QstCodeArr[i].ToString())
                    {
                        cbidObj.Checked = true;
                    }
                }
            }
        }

点评:
1、OnCheckedChanged事件,不要设置AutoPostBack,不然会刷新页面了;
2、ToolTip='<%# Eval("QST_CODE") %>',是绑定的数据字段,用与区分并标记checkbox,也可以用任何自加的属性,比如:xid,pid;
3、如果将<asp:CheckBox ID="chb"> 换成<input type="checkbox" >,则CS代码中的CheckBox类型,应对应成:HtmlInputCheckBox

转载于:https://www.cnblogs.com/tianyige/archive/2008/09/04/1284289.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值