zoukankan      html  css  js  c++  java
  • 向多页TABLE中插入数据时,新增行总是在当前页的最后一行

    CODE IN CO

    OATableBean table = 
                    (OATableBean)webBean.findChildRecursive("LineTable");
                int numOfRowsDisplay = table.getNumberOfRowsDisplayed();
                Serializable[] param01 = { new Number(numOfRowsDisplay) };
                Class[] classType = new Class[] { Number.class, };
                am.invokeMethod("addPlanLines", param01, classType);

    CODE IN AM

    public void addPlanLines(Number numOfDisplay) {
            OADBTransaction tsn = this.getOADBTransaction();
    
            CuxPosAuditPlanLinesFullVOImpl lineVO = 
                getCuxPosAuditPlanLinesFullVO();
            Number planId = getPlanId();
    
            lineVO.setMaxFetchSize(0);
            if (!lineVO.isPreparedForExecution()) {
                lineVO.setWhereClause(null);
                lineVO.executeQuery();
            }
    
            RowSet localRowSet = lineVO.getRowSet();
    
            int i = 1;
            int j = numOfDisplay.intValue();
            int rangeStart = localRowSet.getRangeStart();
            int rangeSize = localRowSet.getRangeSize();
            int rowCountInRange = localRowSet.getRowCountInRange();
            int i1;
            if (rowCountInRange + i <= j)
                i1 = rowCountInRange;
            else {
                i1 = j - i;
            }
            CuxPosAuditPlanLinesFullVORowImpl row = 
                (CuxPosAuditPlanLinesFullVORowImpl)lineVO.createRow();
            if (rangeSize < i1) {
                rangeSize++;
                localRowSet.setRangeSize(rangeSize);
                localRowSet.setRangeStart(rangeStart);
            }
    
            row.setPlanId(planId);
            Number pk = getSequenceValue("CUX_POS_AUDIT_PLAN_LINES_S");
            row.setLineId(pk);
            row.setOrgId(new Number(tsn.getOrgId()));
            row.setOrgName(getOrgName(tsn.getOrgId()));
            localRowSet.insertRowAtRangeIndex(i1, row);
            localRowSet.setCurrentRowAtRangeIndex(i1);
        }

    方法二:


    /**
       * This method is for use with UI Table addRows buttons that require the
       * addition of multiple rows; given a RowIterator (such as a VO) and the
       * number of rows the caller needs to add, this method figures out where
       * the caller should start adding rows in order to comply with the BLAF
       * standard that newly added rows should go into the bottom of the current
       * table range (which is the same as the RowIterator range if things are
       * set up properly), pushing rows into the next range if necessary
       *
       * Returns: range-based (not absolute) index within the current range
       */
      public static int getStartIndexForMultiInsert(RowIterator rowIt, int numRowsToAdd)
      {
        int numRowsInRange = rowIt.getRowCountInRange();
        int rangeSize = rowIt.getRangeSize();
        int firstIndexAtWhichToAdd = 0;
        int numOpenSlotsInRange = (rangeSize - numRowsInRange);
    
        if (rowIt.getRangeSize() < rangeSize)
        {
          rowIt.setRangeSize(rangeSize);
        }
    
        if (numOpenSlotsInRange < numRowsToAdd)
        {
          firstIndexAtWhichToAdd = rangeSize - numRowsToAdd;
        }
        else
        {
          firstIndexAtWhichToAdd = numRowsInRange;
        }
    
        return firstIndexAtWhichToAdd;
      }
    
    调用: 
     int indexForRowInserts = getStartIndexForMultiInsert(vo, 1);
      vo.insertRowAtRangeIndex(indexForRowInserts,row);

    方法三:

    这种方法有点小问题:

    仅仅在第一页有效,应该可以再修改修改,懒得改了

    calculVO.insertRow(row);   
     int fetched = calculVO.getFetchedRowCount();
     fetched = fetched > 9 ? 9 : fetched;
     if (fetched > 0)
     {
       int current = fetched % 10;
       if (current == 0)
       {
         fetched = 9;
       } else
       {
         fetched = current > 9 ? 9 : current;
       }
     }
     calculVO.insertRowAtRangeIndex(fetched, row);
  • 相关阅读:
    WEB UI 整理
    RAT
    client 控制
    SiMay 远控
    SSH/SOCKS成为全局代理
    BypassAntiVirus
    QuasarRAT 使用
    从 Qt 的 delete 说开来
    Spectrum Analyzer test.cpp Example File
    windows下C/C++的内存泄露检测
  • 原文地址:https://www.cnblogs.com/huanghongbo/p/5192006.html
Copyright © 2011-2022 走看看