ADF:获取 RowSetIterator 最后一页中的剩余行
ADF: Fetch the remainder of rows in last page of RowSetIterator
我有一个 rowSetIterator,共有 12 行,rangeSize 为 5。我正在访问如下行:
RowSetIterator rs = vo.getRowSetIterator();
int totalPages = rs.getEstimatedRangePageCount();
for(int pageIndex=0; pageIndex<totalPages; pageIndex++){
rs.scrollToRangePage(pageIndex + 1);
Row[] rows = rs.getAllRowsInRange();
for(int rowIndex=0; rowIndex<rows.length; rowIndex++){
Row row = rows[rowIndex];
print(row);
}
System.out.println("going to next page");
}
但是此代码会打印如下所示的行:
1 2 3 4 5
going to next page
6 7 8 9 10
going to next page
8 9 10 11 12
going to next page
有没有办法只检索滚动到最后一页时出现的剩余行,即只访问第 11 行和第 12 行(来自上面的示例)。
viewObject 是可更新的,访问模式为 SCROLLABLE。
上述案例只是一个例子。在实际情况下,我正在处理更大的 rangeSize 和更大的数据。因此,需要一些帮助来调整我的 viewObject 以提高效率。
viewObject 是一个 RowIterator,因此您不需要像那样使用自己的循环进行迭代。通过允许 ADF 框架处理范围导航,您应该不会遇到同一行两次。以下应该让你接近:
vo.reset();//puts us at slot before first row
while(vo.hasNext())
{
Row row = vo.next();//Automatically navigates rangesets when needed
print(row);
}
如果您关心性能,请阅读:https://docs.oracle.com/middleware/1213/adf/develop/adf-bc-view-object-tuning.htm
如果您要遍历所有行,您可能需要调整视图以具有更大的范围和获取大小(通常建议不超过 100)。
最后,与您的原始问题更相关的是,您可能需要确保未选中视图调整中的 "Fill Last Page of Rows when Paging through RowSet" 选项。
我有一个 rowSetIterator,共有 12 行,rangeSize 为 5。我正在访问如下行:
RowSetIterator rs = vo.getRowSetIterator();
int totalPages = rs.getEstimatedRangePageCount();
for(int pageIndex=0; pageIndex<totalPages; pageIndex++){
rs.scrollToRangePage(pageIndex + 1);
Row[] rows = rs.getAllRowsInRange();
for(int rowIndex=0; rowIndex<rows.length; rowIndex++){
Row row = rows[rowIndex];
print(row);
}
System.out.println("going to next page");
}
但是此代码会打印如下所示的行:
1 2 3 4 5
going to next page
6 7 8 9 10
going to next page
8 9 10 11 12
going to next page
有没有办法只检索滚动到最后一页时出现的剩余行,即只访问第 11 行和第 12 行(来自上面的示例)。
viewObject 是可更新的,访问模式为 SCROLLABLE。
上述案例只是一个例子。在实际情况下,我正在处理更大的 rangeSize 和更大的数据。因此,需要一些帮助来调整我的 viewObject 以提高效率。
viewObject 是一个 RowIterator,因此您不需要像那样使用自己的循环进行迭代。通过允许 ADF 框架处理范围导航,您应该不会遇到同一行两次。以下应该让你接近:
vo.reset();//puts us at slot before first row
while(vo.hasNext())
{
Row row = vo.next();//Automatically navigates rangesets when needed
print(row);
}
如果您关心性能,请阅读:https://docs.oracle.com/middleware/1213/adf/develop/adf-bc-view-object-tuning.htm
如果您要遍历所有行,您可能需要调整视图以具有更大的范围和获取大小(通常建议不超过 100)。
最后,与您的原始问题更相关的是,您可能需要确保未选中视图调整中的 "Fill Last Page of Rows when Paging through RowSet" 选项。