向多页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);
向多页TABLE中插入数据时,新增行总是在当前页的最后一行的更多相关文章
- 触发器修改后保存之前的数据 表中插入数据时ID自动增长
create or replace trigger t before update on test5 for each rowbegin insert into test55 values (:old ...
- 数据库中插入数据时发生ora-00984错误
操作Oracle数据库,插入数据时显示:ORA-00984列在此处不允许错误,如下图所示: 出现的原因是由于,在插入字符或字符串型字段时.如果插入的数据是纯数字,则不会有错误:如果出现字符,则会报OR ...
- 在向"带有自增字段的数据库表"中插入数据时,自定义"该自增字段"的数据
在设计数据库表的时候,经常会使用自增主键或其他自增字段.比如: DB_UserGroups表中GroupID为该表主键,并为自增字段. 但在将某字段设置自增后,想在插入数据时,人为指定自增字段的数据内 ...
- 在Sql2005中,向表中插入数据时遇到uniqueidentifier列,如何插入数据?
Sql2005中,提供了uniqueidentifier 数据类型.说白了,就是个GUID,这种类型开发时倒是很有必要的. 今天程序中遇到了这个问题:表里定义了一个uniqueidentifier 列 ...
- MYSQL中插入数据时出现的问题:
问题: mysql',default,default); ERROR (HY000): Incorrect string value: 解决方案: 首先查看自己的数据表情况: mysql> SH ...
- 向已有的table中插入数据
table: <table id="seleted-table" class="table table-bordered table-hover" sty ...
- django rest framework 向数据库中插入数据时处理外键的方法
一.models.py中 from django.db import models class UserModel(models.Model) user_name = models.CharField ...
- 向mysql数据库中插入数据时显示“Duplicate entry '1′ for key ‘PRIMARY' ”错误
错误情况如题,出现这个错误的原因十分简单: 很明显,这是主键的问题. 在一张数据表中是不能同时出现多个相同主键的数据的 这就是错误的原因,解决的方法: 1.可以将这张表设置成无主键(mysql支持,其 ...
- 使用 QSqlTableModel 模型向数据库中插入数据时,为什么使用 rowCount 函数只能返回 256 最大值?
默认返回缓冲区里面的数据,如果你向要获取更多值,请在前面加入以下语句即可. while(model.canFetchMore()){ model.fetchMore(); } 该语句会获取更多的记录.
随机推荐
- PL/SQL编程基础(五):异常处理(EXCEPTION)
异常处理 异常产生所带来的问题: 使用EXCEPTION程序块进行异常处理: 实现用户自定义异常. 使用异常可以保证在程序中出现运行时异常时程序可以正常的执行完毕: 用户可以使用自定义异常进行操作. ...
- redis cluster 集群畅谈(二)
上一篇http://www.cnblogs.com/qinyujie/p/9029482.html, 主要讲解 redis cluster 集群 搭建,本篇主要讲解实验多master写入.读写分离.实 ...
- 关于volatile 最完整的一篇文章
你真的了解volatile关键字吗? 一.Java内存模型 想要理解volatile为什么能确保可见性,就要先理解Java中的内存模型是什么样的. Java内存模型规定了所有的变量都存储在主内存中.每 ...
- 正则表达式,以python为例
转载需注明原文地址和作者两项内容. 正则表达式目的是能够快速处理字符串内容,主要用于找出指定的字符串,配合其他操作完成任务.使用正则表达式时要了解自己语言的特性,python中的正则表达式默认情况是贪 ...
- java打印随机函数
一 ,打印1-10的随机函数 public static void randomprint(){ for (int i=0;i<100;i++){ //打印一百次 ...
- Saltstack数据系统
1.grainsgrains 是在 minion(客户端)启动时收集到的一些信息,比如操作系统类型.网卡ip等.强调是minion启动时收集到的数据,所以如果改了什么硬件啥的,要重启minion才能收 ...
- (转)SQL Server 2008登录错误:无法连接到(local)的解决
在一些朋友安装完SQL Server 2008之后大多会遇到连接出错的问题.特别对于我们这样的新手而言简直郁闷的要死,好不容易装玩了又出现了问题.此篇文章意在解决安装步骤没有问题,但安装后无法登录的问 ...
- Django:学习笔记(9)——视图
Django:学习笔记(9)——视图 基础视图 基于函数的视图,我们需要在使用条件语句来判断请求类型,并分支处理.但是在基于类的视图中,我们可以在类中定义不同请求类型的方法来处理相对应的请求. 基于函 ...
- 系统管理命令之tty
在Linux操作系统中,所有外围设备都有其名称与代号,这些名称代号以特殊文件的类型存放于/dev目录下.你可以执行tty指令查询目前使用的终端机的文件名称. 1.命令帮助: # tty -- help ...
- 2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) Solution
A:Exam Solved. 温暖的签. #include<bits/stdc++.h> using namespace std; ; int k; char str1[maxn], st ...