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);
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24627116/viewspace-2154482/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24627116/viewspace-2154482/