• 解决UltraWebGrid分页时出现的脚本错误(Infragistics的Bug)


    出错图片如下:

    出现的情况是在UltraWebGrid分页操作时,如果最后一页的行数小于UltraWebGrid设置的page数,而你分页前选择的行是最后一行没有的行,就会出现getRow为空的错误提示.(不知道大家明白我的意思没有-_-!)
       因为这是Infragistics本身的bug问题(不知道新的06V3版本有没有这个情况,我是用05V3版本),所以只有修改对应的脚本了,对应的脚本:(那段出错function,在脚本文件ig_WebGrid_xml.js中)

     1function igtbl_requestSortComplete(gn)
     2{
     3    var g=igtbl_getGridById(gn);    
     4    if(ig_csom.IsIE)
     5    {
     6        var node=g.XmlResp.selectSingleNode("form");
     7        if(!node)
     8            node=g.XmlResp;
     9        node=node.selectSingleNode("xml/UltraWebGrid/Body/Rows");
    10        var rows=g.Rows;
    11        if(g.RowToQuery)
    12        {
    13            rows=g.RowToQuery.Rows;
    14            for(var i=0;i<rows.Band.Index;i++)
    15                node=node.selectSingleNode("Row/Rows")
    16        }
    17        rows.Node.parentNode.replaceChild(node,rows.Node);
    18        rows.Node=node;
    19        rows.SelectedNodes=node.selectNodes("Row");
    20        var arIndex=-1,acColumn=null,acrIndex=-1,aRows=null;
    21        if(g.oActiveRow && g.oActiveRow.OwnerCollection==rows)
    22            arIndex=g.oActiveRow.getIndex();
    23        if(g.oActiveRow && g.oActiveRow.Band.Index>=rows.Band.Index)
    24            g.setActiveRow(null);
    25        if(g.oActiveCell && g.oActiveCell.Row.OwnerCollection==rows)
    26        {
    27            acColumn=g.oActiveCell.Column;
    28            acrIndex=g.oActiveCell.Row.getIndex();
    29        }
    30        if(g.oActiveCell && g.oActiveCell.Band.Index>=rows.Band.Index)
    31            g.setActiveCell(null);
    32        rows.dispose();
    33        rows.length=rows.SelectedNodes.length;
    34        rows.render();
    35        if(arIndex!=-1)
    36        if(rows.length > arIndex)  //大家注意这里36行if(rows.length > arIndex)是我后添加的
    37            rows.getRow(arIndex).activate();  //出错问题的地方,因为是直接读取上一页的行数,所以会出错,所以我在上面加了个判断.
    38        if(acColumn)
    39        {
    40            if(acrIndex==-1)
    41            {
    42                if(rows.AddNewRow)
    43                    rows.AddNewRow.getCellByColumn(acColumn).activate();
    44            }
    45            else if(acrIndex<rows.length)
    46                rows.getRow(acrIndex).getCellByColumn(acColumn).activate();
    47        }
    48        g.RowsRetrieved=rows.length;
    49        if(rows.Band.Index==0)
    50        {
    51            if(g._scrElem)
    52            {
    53                igtbl_scrollTop(g._scrElem,0);
    54                g.alignDivs();
    55            }
    56            else
    57                igtbl_scrollTop(g.DivElement,0);
    58        }
    59    }
    60}
    注:length和arIndex表示不一样的意思,rows.length为页面总的行数,而arIndex表示你选择的行号,而行号是从0开始.
  • 相关阅读:
    cocos2d-x 3.0游戏实例学习笔记 《跑酷》第七步--物理碰撞检測(1)
    Android给定坐标计算距离
    LeetCode——Gray Code
    hdu 1203
    2015 年度新增开源软件排名TOP100
    compact处理流程分析
    ExtJs--06--Ext.WindowGroup相关方法简单使用
    android4.4的两个bug
    高阶MapReduce_1_链接多个MapReduce作业
    如何设置eclipse格式化xml代码时不自动换行
  • 原文地址:https://www.cnblogs.com/zjy/p/563320.html
Copyright © 2020-2023  润新知