JQuery解决GridView控件翻页问题解决方案!

最近项目中遇到一个问题:GridView翻页时记录不到翻页前选择的项。
我们的解决办法是:
1、用一个服务器控件HiddenFile记录到每个页面所选择项目的ID,这里有两问题,添加字串和删除相应的字串。
//给每个checkbox(注:id为checkAll的一个input控件,为方便全选,所添加的存在于HeadTemplate中的一个由JQuery控制的chechbox)添加事件。
   $(document).ready(function () {//如果选择,添加。
           $(":checkbox:not(input[id='checkAll'])").click(function () {
               if (this.checked == true) {
                   $("#hfId").val($("#hfId").val() + $(this).siblings("input[type=hidden]").val() + ";");//siblings()获取匹配集合中每个元素的同胞,通过选择器进行筛选是可选择的。
               }
               if (this.checked == false) {//如果取消选择则去掉所选择的ID,删除。
                   var val = $(this).siblings("input[type=hidden]").val();
                   var str = $("#hfId").val();
                   if (str.indexOf(";" + val + ";") > -1) {//如果包含则去掉所选择的项。
                       str = str.replace(";" + val, "");
                       $("#hfId").val(str);
                   }

               }
           });
       });
2.当GirdView翻页时如何记录到ID匹配、选中状态。我们在这里是做循环处理。
$(document).ready(function () {
           //绑定已选项
           var table = $("#gridShow");
           table.find("tr").each(function (i) {//在第行tr中去循环。
               if (i > 0) {
                   if ($("#hfId").val().indexOf(";" + $(this).find("td:first").find("input[type=hidden]").val() + ";") > -1) {//我们这里将HiddenFile放在第一列的HeaderTemlate中所以我们会找TR中的第一个td.
                       $(this).find("td:first").find("input[type=checkbox]").attr("checked", true);//直接加上checked属性赋值为true.这们我们将所有的已经在HiddenFile中的所有ID项对应到当页的gridview让其选中状态。
                   }
               }
           })
       });
3.以上两步我们基本上完了其选中和绑定。但在全选中我们也要做相应的动作。
<script type="text/javascript">
       $(function () {
          
           //绑定事件
           $("#checkAll").click(function () {
               var tab = $("#gridShow");
               if (this.checked == true) {
                   $(":checkbox:not(input[id='checkAll'])").attr('checked', true);//如果触发则全部checkbox为选中状态。
                   tab.find("tr").each(function (i) {
                       if (i > 0) {//注意:这里其实有一个bug,在做全选添加时,应该判断如果ID已经在HiddenFile中则不应该再去加。
                           $("#hfId").val($("#hfId").val() + $(this).find("td:first").find("input[type=hidden]").val() + ";");
                       }
                   });
               }
               else {
                   $(":checkbox:not(input[id='checkAll'])").attr('checked', false);//如果触发则全部checkbox为不选中状态。
                   tab.find("tr").each(function (i) {
                       if (i > 0) {
                           var val = $(this).find("td:first").find("input[type=hidden]").val();
                           var str = $("#hfId").val();
                           if (str.indexOf(";" + val + ";") > -1) {//如果所选择的GridView的ID在HiddenFile中去掉。
                               str = str.replace(";" + val, "");
                               $("#hfId").val(str);
                           }
                       }
                   })

               }
           })
       })
       
   </script>
好了,已经写到这里了,基本功能已经完成了其中包括table操作,和一些基本的字串操作indexOf,和replace
posted @ 2013-10-07 22:20  晓月学残二  阅读(304)  评论(0)    收藏  举报