UltralWebGrid的全选功能

今天做一个UltralWebGrid的全选功能,差点没有把我逼疯

本以为几分钟的事情,结果花了两个小时。

起初我的写法如下: 

 function SelectAllRows(gridId)
        {
           var grid = igtbl_getGridById(gridId);
  
            if(grid)
            {
                if(grid.Rows.length > 0)
                {
             
                    for(var i=0;i<grid.Rows.length;i++)
                    {
                        var item = grid.Rows.rows[i];//这里老是说有问题,经常跑到i=7,或者8以上就取不到值了。
                        item.setSelected(true);
                    }
                }
            }
         
        }

 

于是我在百般无赖的情况下使用了另一个方法去替换这个方法,居然成功了。

 

 function SelectAllRows(gridId)
        {
           var grid = igtbl_getGridById(gridId);
  
            if(grid)
            {
                if(grid.Rows.length > 0)
                {
             
                    for(var i=0;i<grid.Rows.length;i++)
                    {
                        var item = grid.Rows.getRow(i);//非要这么写法才行。这破封装,这样的OO设计不如不设计
                        item.setSelected(true);
                    }
                }
            }
         
        }

 

最终的版本。

用checkbox做的,点击checkbox变全选,点击之后变成反选


function SelectAllRows(gridId,checkId)
{
   var grid = igtbl_getGridById(gridId);
   document.getElementById(checkId).checked=document.getElementById(checkId).checked;//这一句必不可少
   if(document.getElementById(checkId).checked)
   {
       document.getElementById(checkId).nextSibling.innerText="反选";
   }
   else
   {
       document.getElementById(checkId).nextSibling.innerText="全选";
   }
  
    if(grid)
    {
        if(grid.Rows.length > 0)
        {
            for(var i=0;i<grid.Rows.length;i++)
            {
                var item = grid.Rows.getRow(i);
               
                item.setSelected(document.getElementById(checkId).checked);
            }
        }
    }
   
    return false;
}

 

 

 

以下是全部服务器代码

                    UltraGridColumn ugc = new Infragistics.WebUI.UltraWebGrid.UltraGridColumn("全选", "<input id='checkbox" + this.ClientID.ToString() + "' type='checkbox' οnclick='SelectAllRows(/"" + this.ClientID.ToString() + "/",/"checkbox" + this.ClientID.ToString() + "/");'/><span>全选</span>", ColumnType.NotSet, " ");
                    ugc.Width = Unit.Pixel(50);
                    ugc.Header.Fixed = true;
                    ugc.CellStyle.HorizontalAlign = HorizontalAlign.Center;
                    ugc.Header.Style.HorizontalAlign = HorizontalAlign.Center;
                    ugc.AllowRowFiltering = false;
                    ugc.Header.ClickAction = HeaderClickAction.Select;
                    ugc.Header.Title = "全选/反选";
                    ugc.AllowUpdate = AllowUpdate.No;
                    this.Rows.Band.Columns.Insert(1, ugc);  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值