PAGINATION IN DATAGRID
actually i am reading data from xml and puttin that data in datagrid
in the xml there is many Heading and in each Heading there is 10 or 15 data.
i want each Heading in a new datagrid page with all data and below of that datagrid there is next-previous button
on clicking of next button it will go to next page like our discussion page of adobe forum and also on clicking previous button it wil come 2 previous page
Consider the DataGrid a "dumb" display that for the most part that displays the data bound to it from some data model object. The data model object should be responsible for handling the paging mechanism which could be triggered by some other controls such as buttons. It could either filter a larger set that it gets all at once or query the server as needed.
Similar Messages
-
Need help Pagination Suppourt with DataGrid
Hi ,
When i do a search Operation , the data from Database is huge and i think if i display all of them at a Time it will be a performance and response Time issue .
So the question i am asking is that , can any body please give me a basic idea as how to implement Pagination with DataGrid Results ??
Need help with Datgrid and Pagination suppourt .
Thnaks in advnace .Hi Kiran,
Try referring to the below link...
http://www.flexicious.com/
Thanks,
Bhasker Chari.S -
Pagination in Advanced Datagrid ..
I need to use pagination for Flex advanced datagrid...how should i get the length of the groupingcollection for calculating my page size....
For the Flex datagrid i have it working as I have the length of dataprovider which will be my page size....
Any ideas...or can anyone post an example of advanced datagrid with pagination...Will be of great help...
Thankshave a look @ this http://www.adobe.com/devnet/flex/articles/flashbuilder4_datapaging_php.html
-
Flex datagrid pagination?
Hi. Does the datagrid or AdvancedDataGrid support pagination?
From what I've found, they don't seem to."curious_Lee" <[email protected]> wrote in
message
news:g91nfo$nv8$[email protected]..
> Hi. Does the datagrid or AdvancedDataGrid support
pagination? From what
> I've found, they don't seem to.
http://gurufaction.blogspot.com/2007/02/flex-datagrid-paging-example-with.html -
Help required on Struts-Datagrid
Hello All,
I am seeking for suggestions on how can one fix the header/column-names in Struts-Datagrid.
In my jsp , I have implemented struts-datagrid and showing many rows at a time.
While scrolling the page , the column-names/header of the datagrid also scroll up and down and do not remain visible to the user.
Is there any way to fix the column-name/header on the top of datagrid?
Kindly suggest any solution.
Thanks
-MukulHi
I have neither used display tag or logica iterator.its an normal inplementaion.
I have the peace of code to show you how i have implemented it with pagination.
<layout:pager maxPageItems="8" sessionPagerId="" linksLocation="top">
<layout:datagrid property="" indexId="i" styleClass="DATAGRID" model="datagrid" multipleSelectionAllowed="false">
<layout:datagridColumn title="" property="" width="150" maxlength="15" styleClass="NORMAL" mode="E,I,P"/>
<layout:datagridColumn title="" property="" width="620" maxlength="15" styleClass="NORMAL" mode="E,I,P"/>
<layout:datagridCheckbox title="" property="" onchange=""/>
</layout:datagrid>
</layout:pager>
thanks & regards
Praveen -
Has anyone addressed pagination through Flex yet? I've
searched the forums but have only seen a few questions with no
replies. I need to implement this on a datagrid.The flash player, while 8+ is massively better that 7- is
still bottlenecked by rendering visual data. Your data service will
return 3000 records in milliseconds, but if you try to render them
all, the player will be very slow.
Actually, the list-based components are pretty good at
minimizing rendering, by only rendering the visible set of data.
I do not have any definitive solution, but do a test with a
DataGrid that is restircted to some reasonable rowCount, like
10-15, and see how it performs.
Matt Chotin blogged in detail about using large datasets with
server-side paging, back in the 1.5 days. This might not be
necessary with 3000 records though.
Al i can suggest is to test a bit.
Tracy -
Checkboxes checked and pagination
Hi,
I have a paginated datagrid done with a report , displaying on each page :
- a checkbox in the header to select all
- on checkbox on each row
My problem is just that i would like to keep (in session) the checked rows (for each page) : then navigating from next to previous i could retrieve what i've checked before (the same as GMail)
My primary idea idea was to use an application item on server side, but i should intercept next previous actions behind the navigation control links to be able to save the checked rows for each page.
I should be able to rerender (with Javascript) the checked row on each page.
Any idea?
LOK, the code above could be ameneded to:
// Initialize count
var sum = 0;
// If a check box is not Off, count it
for (var i = 1; i < 16; i += 1) {
sum += getField("checkbox" + i).value !== "Off" ? 1 : 0;
if (sum > 5) {
// clear fields here
for (var i = 1; i < 16; i += 1) {
getField("checkbox" + i).value = "Off";
app.alert("Your message goes here.");
} else {
TestLetter1();
> The change of background color does not occur as the function TestLetter1() is not called yet, I think.
It would be possible. If you set the background colors with the first press of the button and the user goes back and checks more check boxes, the background colors would not be properly set if the button were pressed again.
George -
I've found a flex paging example I'd like to get working, but can't seem to get it running.
The Example files can be found here: http://blogs.adobe.com/tlf/2008/12/actionscript-pagination-exampl.html
I've downloaded and imported the project into flex. However I seem to have an error that prevents the example from running. Here is the error that appears
unable to open '/Users/Adam/Documents/Flex Builder 3/libs'
This is what displays if I try to run the project anyways:
File not found: file:/Users/Adam/Documents/Flex%20Builder%203/Pagination/bin-debug/PaginationAS.swf
Does anyone have any idea how I can go about getting this example up and running in flex?take a look at this post with an advanced DataGrid Pagination Example.
http://forums.adobe.com/message/3166670#3166670 -
Sorting all records in datagrid
Hi All,
I have a datagrid with pagination. On default or on click of the sort arrow of a particular column in the grid it sorts only the current page data. my requirement is it should sort across all records returned in array collection not only the records for the current page. Please share the working sample code.
Thanks,
RavishaTry this code:
<?xml version="1.0"?>
<!-- dpcontrols/adg/SimpleHierarchicalADG.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()" layout="vertical">
<mx:Script>
<![CDATA[
import mx.events.DataGridEvent;
import mx.collections.ArrayCollection;
include "dgData.as";
[Bindable]
private var dp:ArrayCollection;
private var offset:int = 0;
[Bindable]
private var pageNum:int = 0;
[Bindable]
private var maxPages:int;
[Bindable]
private var dgRowCount:int = 9;
private function init():void
dp = new ArrayCollection();
maxPages = dpHierarchy.length / dgRowCount;
filterPage();
private function navToPage(pageOffset:int):void
pageNum += pageOffset;
if (pageNum < 0)
pageNum = 0;
if (pageNum > maxPages)
pageNum = maxPages;
offset = pageNum * dgRowCount;
filterPage();
private function filterPage():void
dp.source = dpHierarchy.source.filter(function callback(item:*, index:int, array:Array):Boolean
return (index >= offset && index < offset + dgRowCount);
private function doSort(evt:DataGridEvent):void
var sortDescending:Boolean = evt.itemRenderer.data.sortDescending;
!sortDescending ? dpHierarchy.source.sortOn(evt.dataField, Array.NUMERIC | Array.DESCENDING) : dpHierarchy.source.sortOn(evt.dataField, Array.NUMERIC);
filterPage();
]]>
</mx:Script>
<mx:DataGrid dataProvider="{dp}" rowCount="{dgRowCount}" sortableColumns="true" headerRelease="doSort(event)">
<mx:columns>
<mx:DataGridColumn headerText="ID" dataField="id"/>
<mx:DataGridColumn headerText="First prop" dataField="firstProp"/>
<mx:DataGridColumn headerText="Second prop" dataField="secondProp"/>
</mx:columns>
</mx:DataGrid>
<mx:HBox horizontalAlign="center">
<mx:Button label="Prev page" click="navToPage(-1)"/>
<mx:Label text="{pageNum + 1}/{maxPages + 1}" textAlign="center" width="60"/>
<mx:Button label="Next page" click="navToPage(1)"/>
</mx:HBox>
</mx:Application>
You have to add the following file to your source folder:
Hope you can work it out with this
Dany -
hi,
In the database, A table consists of more than 200 records.i have to display 10 by 10 records.
My question is ,In the datagrid First i have to display the first ten records.When a user scrolls the in the datagrid i need to display the another 10 records like ....... until all the records i need to display from the table.
Please help me to solve the problem.
Thanks and Regards,
venkat.RI have done Flex Pagination using PHP before. It is not impossible as Flex just displays what data comes back from the webservice you are calling. If you would like to see some examples you can click here:
https://www.gridsport.net/store/?itemid=Alpinestars&name=Alpinestars
You will have to keep track of the page number. I have my webservice send back an additional parameter that tells flex how many pages of data it has in order to set the maximum for the numericalStepper in the above example. Aside from that the other suggestions of passing variables to a webservice sound right on the mark. I hope this helps.
Thanks -
Efficiently retrieve MANY records with Advanced Datagrid?
Hi all,
I've encountered the following issue:
I have a database with more then 120.000 records, that I want to show with an advanced datagrid.
It's grouped by 2 ID's, thus showing the results a group within a group. This works perfect!
Only: it takes a long time before it shows the results, probably because it's downloading all the records at once (with the getAll() function).
Is there a way to use advanced datagrid more efficiently? Like: first download the two columns that are used to define the groups, and only retrieve data that's visible once you click the group? (In this case, the 2nd group within the 1st group)
This would greatly increase the loading-time of the whole application.
Or should I take an other aproach to this application, like, using a tree-component, a simple datagrid, writing alternative update & retrieve functions in AS3 & PHP?
Thanks!Hi Sam, thanks for your help!
I'm not sure though how to create the returned datastructure?
Example:
Product_id
productname
category_a
category_b
1
Toy A
boy
0-3
2
Toy B
girl
0-3
3
Toy C
girl
3-6
4
Toy D
boy
6-9
5
Toy E
girl
3-6
6
Toy F
boy
0-2
7
Toy G
boy
6-9
Grouping by [category_a] and [category_b], I would like to get the following in the Advanced Datagrid, but paginated:
Product_ID
Productname
boy
0-2
6
Toy F
0-3
1
Toy A
6-9
4
Toy D
7
Toy G
girl
0-3
2
Toy B
3-6
3
Toy C
5
Toy E
In my PHP-service, I would create the following query:
public function getProducts_paged($startIndex, $numItems) {
$stmt = mysqli_prepare($this->connection, "SELECT product_id, category_a, category_b, productname FROM $this->tablename GROUP BY category_a, category_b LIMIT(?,?)");
$this->throwExceptionOnError();
mysqli_bind_param($stmt, 'ii', $startIndex, $numItems);
mysqli_stmt_execute($stmt);
$this->throwExceptionOnError();
$rows = array();
mysqli_stmt_bind_result($stmt, $row->product_id, $row->category_a, $row->category_a, $row->productname);
while (mysqli_stmt_fetch($stmt)) {
$rows[] = $row;
$row = new stdClass();
mysqli_stmt_bind_result($stmt, $row->product_id, $row->category_a, $row->category_a, $row->productname);
mysqli_stmt_free_result($stmt);
mysqli_close($this->connection);
return $rows;
This will give me the right structure, Right?
Now:
- How to tell the Advanced Datagrid which 2 groups to apply? -
Issue in pagination of pivotal view (10 rows per page)???
Hi All,
I’m implementing pagination in pivotal view, report has to show 10 records per page.
Report has to show for 8 weeks data per employee and 10 employees information per page, however report is displaying data for more than 10 employees and for a week single week, in second page its showing for 2 week and so on ….
I used all the following functions however issue persists.
1. FLOOR(RCOUNT(1) /10)
2. CEILING((RCOUNT(1))/10.0)
3. TRUNCATE((RCOUNT(1)-1)/10, 0) +1
4. CASE when rcount(1)<11 then '1-10' when rcount(1)<21 then '11-20' when rcount(1)<31 then '21-30' else '30+' end
Any suggestions
Thanks,
SMALook in criteria add one more column
in FX write this formula
Go to the formula window of this column and enter the formula shown below
CASE WHEN RCOUNT(1) < 11 THEN ‘1-10′
WHEN RCOUNT(1) < 21 THEN ‘11-20′
WHEN RCOUNT(1) < 31 THEN ‘21-30′
ELSE ‘30+’ END
Once this is done, drag and drop this column into the Pages section of your pivot table. Now you can paginate through your pivot table report.
let us know if its solve your problem
Thanks -
Datagrid Image Renderer Broken in CS SDK but not Flex project
Within a Photoshop Extension, I have a DataGrid which has an inline custom image renderer whose dataprovider is an ArrayCollection called "photos" representing a list of photos and some metadata properties. One of the properties "fileName" is concatenated with a path to a thumbnail image such as source="{'LR_AUTO/imported/thumbs/' + data.fileName}".
The dataprovider is bound to a LCDS DataService. When the extension is first launched, the dataservice initializes the dataprovider with the existing values for the "photos" arraycollection. The thumbnail images are correctly shown.
However, when the DataService receives a new row and updates the photos dataprovider, the datagrid's new row shows a broken image for the thumbnail even though the path is correct. I have dumped the photos dataprovider and verified that all information is correct. When I close Photoshop and relaunch it from Flash Builder, once again LCDS initializes the photos ArrayCollection and THEN the thumbnail that previously showed as broken show up correctly.
I have a ColdFusion Directory Watcher Gateway that watches a directory where Lightroom auto-imports images from a tethered capture session. When the camera sends Lightroom a new image, the new image is processed by Lightroom and moved to a target directory, and since ColdFusion's Directory Watcher is watching that targeted directory, ColdFusion will create a thumbnail image in a subfolder and notifiy LCDS that of the new image and related metadata.
*** This is the interesting part *** When Lightroom places new images in the target directory, this is propogated to the Photoshop Extension's datagrid, and the new row shows up as described earlier, showing a broken image for the thumbnail. BUT, instead of Lightroom, if I manually copy images to the folder where ColdFusion is watching, then exact same code path is exectuted and in the Photoshop Datagrid the new row appears and THE THUMBNAIL IMAGE shows up correctly.
The difference seems to be only in how the images are put in the original target location. The problem is when Lightroom puts them there, but it works when I put them there as a user.
*** More Interesting Info *** I have the Flex code for the Photoshop Extension duplicated in a standalone, non-CSSDK project using Flex 3.4 which I launch in a browser. I have mirrored the code in the Photoshop extension, but in this manner, the problem does not exist. With plain Flex 3.4 in a browser, whenever LCDS notifies the datagrid of a new photo record, the datagrid's new row ALWAYS shows the thumbnail correctly.
A primary difference in how the thumbnail image is rendered is that in a browser, the Flex 3.4 project accesses the image assets over the network, however, in the Photoshop Extension, the image asset WITH THE SAME RELATIVE PATH is accessed over the local file system.
source="{'LR_AUTO/imported/thumbs/' + data.fileName}"
So in the case of the browser, this path is a relative URL and the image is retrieved over HTTP, however, in the PS Extension, the same path represents a file system path relative to the project folder.
Unfortunately, because the Flash Player (including APE) cannot access BOTH the network and the local filesystem, so I cannot change the Extension to use network access.
** The important part to remember is that when I stop the Flash Builder debug session and close Photoshop, then relaunch the debug with Photoshop, then all the images show up correctly in the Extension.
Your advice is appreciated.
Thank you!
Steve
====================================================
Environment
====================================================
Photoshop CS5 Extended 12.01 x32
Flash Builder 4
CS SDK 1.02
Extension Builder SDK 3.4
MacBook Pro / OS X 10.5 / Intel Core 2 Duo 2.66 GHz / Procs: 1 / Cores: 2 / Memory: 8 GB
App configured for Photoshop CS5 and Photoshop CS5 Extended
====================================================
NewsAgencyPhotoshop.mxml
====================================================
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="com.stevenerat.news.*"
horizontalScrollPolicy="off" verticalScrollPolicy="off" verticalGap="0"
layout="vertical" horizontalAlign="left" backgroundColor="#353535"
historyManagementEnabled="false"
creationComplete="init();">
<mx:Script>
public function handlePhotoClick(data:Object):void {
this.PreviewImageWindow = PreviewImage(PopUpManager.createPopUp(this,PreviewImage,true));
var filePath:String = data.dirPath + data.fileName;
PreviewImageWindow.addEventListener("imageOpenEvent",imageOpenListener);
PreviewImageWindow.addEventListener("imageCloseEvent",imageCloseListener);
PreviewImageWindow.addEventListener("imageSavedEvent",imageSaveListener);
PreviewImageWindow.setFileName(data.fileName);
PreviewImageWindow.setFilePath(filePath);
PreviewImageWindow.y = 0;
PreviewImageWindow.x = 0;
]]>
</mx:Script>
<mx:ArrayCollection id="photos"/>
<NewsPhoto/>
<mx:DataService id="ds" destination="NewsAgencyPhotos" autoSyncEnabled="true" autoCommit="true" conflict="conflictHandler(event)"/>
<mx:Label text="News Agency Photos" fontSize="20" paddingBottom="30"/>
<mx:Label text="Available Images" fontSize="15"/>
<mx:DataGrid id="photoIPTC" dataProvider="{photos}" editable="true" width="220" rowCount="5" rowHeight="75" wordWrap="true">
<mx:columns>
<mx:DataGridColumn headerText="id" dataField="fileName" width="40" editable="false" sortDescending="true"/>
<mx:DataGridColumn dataField="psLock" width="65" headerText="Status" editable="false" editorDataField="value">
<mx:itemEditor>
<mx:Component>
<mx:ComboBox editable="false">
<mx:dataProvider>
<mx:String>New</mx:String>
<mx:String>Open</mx:String>
<mx:String>Edited</mx:String>
</mx:dataProvider>
</mx:ComboBox>
</mx:Component>
</mx:itemEditor>
</mx:DataGridColumn>
<mx:DataGridColumn headerText="Photo" dataField="fileName" width="80" editable="false">
<mx:itemRenderer>
<mx:Component>
<mx:HBox horizontalAlign="center" horizontalScrollPolicy="off" verticalScrollPolicy="off">
<mx:Image click="outerDocument.handlePhotoClick(data);" source="{'LR_AUTO/imported/thumbs/' + data.fileName}" width="75" height="75"/>
</mx:HBox>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>
</mx:Application>
====================================================
A DUMP OF THE DATAPROVIDER
in this case, one array item existed when launched, then a second was added
while running. The first has its thumbnail show, the second item has broken image
====================================================
------------------DUMP----------------------------
(mx.collections::ArrayCollection)#0
filterFunction = (null)
length = 2
list = (mx.data::DataList)#1
fillParameters = (Array)#2
length = 2
localItems = (Array)#3
[0] (com.stevenerat.news::NewsPhoto)#4
aperture = "F10"
cameraLens = "EF24-70mm f/2.8L USM"
cameraModel = "Canon EOS 7D"
city = ""
copyrightNotice = "© Steven Erat 2011"
country = ""
creator = "Steven Erat"
description = ""
dirPath = "/Users/stevenerat/LR_AUTO/imported/"
fileName = "ERAT_STEVEN_20110122_162.jpg"
focalLen = "42.0 mm"
headline = ""
id = 1
iso = "100"
keywords = "Alt, Dramatic, Fashion, Girl, Glamorous, Glamour, Inked, Model, Portrait, SOPHA"
psLock = "New"
shutterSpeed = "1/128 sec"
state = ""
[1] (com.stevenerat.news::NewsPhoto)#5
aperture = "F10"
cameraLens = "EF24-70mm f/2.8L USM"
cameraModel = "Canon EOS 7D"
city = ""
copyrightNotice = "© Steven Erat 2011"
country = ""
creator = "Steven Erat"
description = ""
dirPath = "/Users/stevenerat/LR_AUTO/imported/"
fileName = "ERAT_STEVEN_20110122_163.jpg"
focalLen = "42.0 mm"
headline = ""
id = 2
iso = "100"
keywords = "Alt, Dramatic, Fashion, Girl, Glamorous, Glamour, Inked, Model, Portrait, SOPHA"
psLock = "New"
shutterSpeed = "1/128 sec"
state = ""
uid = "8BAC025E-60D1-11F1-3654-44BDB0D218CE"
view = (mx.collections::ArrayCollection)#6
filterFunction = (null)
length = 2
list = (mx.data::DataList)#1
sort = (null)
source = (null)
sort = (null)
source = (null)
------------------END_DUMP------------------------I expected that if my extension uses the local filesystem AND the network that I would get a Security Sandbox Exception as I recently described in this thread:
http://forums.adobe.com/thread/791918?tstart=0
However, I just tried changing my datagrid image renderer to access the thumbnail via HTTP and the thumbnail issue after Lightroom export does not happen.
<mx:DataGridColumn headerText="Photo" dataField="fileName" width="80" editable="false">
<mx:itemRenderer>
<mx:Component>
<mx:HBox horizontalAlign="center" horizontalScrollPolicy="off" verticalScrollPolicy="off">
<mx:Image click="outerDocument.handlePhotoClick(data);" source="{'http://localhost:8500/LR_AUTO/imported/thumbs/' + data.fileName}" width="75" height="75"/>
</mx:HBox>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
Furthermore, I can also open the image via the Photoshop DOM, and it does open correctly. It seems that I do have a solution now, although I'm not certain as to why I'm not getting a Security Sandbox Exception as I described in the other post.
Thanks for reading. -
Pagination query help needed for large table - force a different index
I'm using a slight modification of the pagination query from over at Ask Tom's: [http://www.oracle.com/technology/oramag/oracle/07-jan/o17asktom.html]
Mine looks like this when fetching the first 100 rows of all members with last name Smith, ordered by join date:
SELECT members.*
FROM members,
SELECT RID, rownum rnum
FROM
SELECT rowid as RID
FROM members
WHERE last_name = 'Smith'
ORDER BY joindate
WHERE rownum <= 100
WHERE rnum >= 1
and RID = members.rowidThe difference between this and the one at Ask Tom's is that my innermost query just returns the ROWID. Then in the outermost query we join the ROWIDs returned to the members table, after we have pruned the ROWIDs down to only the chunk of 100 we want. This makes it MUCH faster (verifiably) on our large tables, as it is able to use the index on the innermost query (well... read on).
The problem I have is this:
SELECT rowid as RID
FROM members
WHERE last_name = 'Smith'
ORDER BY joindateThis will use the index for the predicate column (last_name) instead of the unique index I have defined for the joindate column (joindate, sequence). (Verifiable with explain plan). It is much slower this way on a large table. So I can hint it using either of the following methods:
SELECT /*+ index(members, joindate_idx) */ rowid as RID
FROM members
WHERE last_name = 'Smith'
ORDER BY joindate
SELECT /*+ first_rows(100) */ rowid as RID
FROM members
WHERE last_name = 'Smith'
ORDER BY joindateEither way, it now uses the index of the ORDER BY column (joindate_idx), so now it is much faster as it does not have to do a sort (remember, VERY large table, millions of records). So that seems good. But now, on my outermost query, I join the rowid with the meaningful columns of data from the members table, as commented below:
SELECT members.* -- Select all data from members table
FROM members, -- members table added to FROM clause
SELECT RID, rownum rnum
FROM
SELECT /*+ index(members, joindate_idx) */ rowid as RID -- Hint is ignored now that I am joining in the outer query
FROM members
WHERE last_name = 'Smith'
ORDER BY joindate
WHERE rownum <= 100
WHERE rnum >= 1
and RID = members.rowid -- Merge the members table on the rowid we pulled from the inner queriesOnce I do this join, it goes back to using the predicate index (last_name) and has to perform the sort once it finds all matching values (which can be a lot in this table, there is high cardinality on some columns).
So my question is, in the full query above, is there any way I can get it to use the ORDER BY column for indexing to prevent it from having to do a sort? The join is what causes it to revert back to using the predicate index, even with hints. Remove the join and just return the ROWIDs for those 100 records and it flies, even on 10 million records.
It'd be great if there was some generic hint that could accomplish this, such that if we change the table/columns/indexes, we don't need to change the hint (the FIRST_ROWS hint is a good example of this, while the INDEX hint is the opposite), but any help would be appreciated. I can provide explain plans for any of the above if needed.
Thanks!Lakmal Rajapakse wrote:
OK here is an example to illustrate the advantage:
SQL> set autot traceonly
SQL> select * from (
2 select a.*, rownum x from
3 (
4 select a.* from aoswf.events a
5 order by EVENT_DATETIME
6 ) a
7 where rownum <= 1200
8 )
9 where x >= 1100
10 /
101 rows selected.
Execution Plan
Plan hash value: 3711662397
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1200 | 521K| 192 (0)| 00:00:03 |
|* 1 | VIEW | | 1200 | 521K| 192 (0)| 00:00:03 |
|* 2 | COUNT STOPKEY | | | | | |
| 3 | VIEW | | 1200 | 506K| 192 (0)| 00:00:03 |
| 4 | TABLE ACCESS BY INDEX ROWID| EVENTS | 253M| 34G| 192 (0)| 00:00:03 |
| 5 | INDEX FULL SCAN | EVEN_IDX02 | 1200 | | 2 (0)| 00:00:01 |
Predicate Information (identified by operation id):
1 - filter("X">=1100)
2 - filter(ROWNUM<=1200)
Statistics
0 recursive calls
0 db block gets
443 consistent gets
0 physical reads
0 redo size
25203 bytes sent via SQL*Net to client
281 bytes received via SQL*Net from client
8 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
101 rows processed
SQL>
SQL>
SQL> select * from aoswf.events a, (
2 select rid, rownum x from
3 (
4 select rowid rid from aoswf.events a
5 order by EVENT_DATETIME
6 ) a
7 where rownum <= 1200
8 ) b
9 where x >= 1100
10 and a.rowid = rid
11 /
101 rows selected.
Execution Plan
Plan hash value: 2308864810
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1200 | 201K| 261K (1)| 00:52:21 |
| 1 | NESTED LOOPS | | 1200 | 201K| 261K (1)| 00:52:21 |
|* 2 | VIEW | | 1200 | 30000 | 260K (1)| 00:52:06 |
|* 3 | COUNT STOPKEY | | | | | |
| 4 | VIEW | | 253M| 2895M| 260K (1)| 00:52:06 |
| 5 | INDEX FULL SCAN | EVEN_IDX02 | 253M| 4826M| 260K (1)| 00:52:06 |
| 6 | TABLE ACCESS BY USER ROWID| EVENTS | 1 | 147 | 1 (0)| 00:00:01 |
Predicate Information (identified by operation id):
2 - filter("X">=1100)
3 - filter(ROWNUM<=1200)
Statistics
8 recursive calls
0 db block gets
117 consistent gets
0 physical reads
0 redo size
27539 bytes sent via SQL*Net to client
281 bytes received via SQL*Net from client
8 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
101 rows processed
Lakmal (and OP),
Not sure what advantage you are trying to show here. But considering that we are talking about pagination query here and order of records is important, your 2 queries will not always generate output in same order. Here is the test case:
SQL> select * from v$version ;
BANNER
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for Linux: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
SQL> show parameter optimizer
NAME TYPE VALUE
optimizer_dynamic_sampling integer 2
optimizer_features_enable string 10.2.0.1
optimizer_index_caching integer 0
optimizer_index_cost_adj integer 100
optimizer_mode string ALL_ROWS
optimizer_secure_view_merging boolean TRUE
SQL> show parameter pga
NAME TYPE VALUE
pga_aggregate_target big integer 103M
SQL> create table t nologging as select * from all_objects where 1 = 2 ;
Table created.
SQL> create index t_idx on t(last_ddl_time) nologging ;
Index created.
SQL> insert /*+ APPEND */ into t (owner, object_name, object_id, created, last_ddl_time) select owner, object_name, object_id, created, sysdate - dbms_random.value(1, 100) from all_objects order by dbms_random.random;
40617 rows created.
SQL> commit ;
Commit complete.
SQL> exec dbms_stats.gather_table_stats(user, 'T', cascade=>true);
PL/SQL procedure successfully completed.
SQL> select object_id, object_name, created from t, (select rid, rownum rn from (select rowid rid from t order by created desc) where rownum <= 1200) t1 where rn >= 1190 and t.rowid = t1.rid ;
OBJECT_ID OBJECT_NAME CREATED
47686 ALL$OLAP2_JOIN_KEY_COLUMN_USES 28-JUL-2009 08:08:39
47672 ALL$OLAP2_CUBE_DIM_USES 28-JUL-2009 08:08:39
47681 ALL$OLAP2_CUBE_MEASURE_MAPS 28-JUL-2009 08:08:39
47682 ALL$OLAP2_FACT_LEVEL_USES 28-JUL-2009 08:08:39
47685 ALL$OLAP2_AGGREGATION_USES 28-JUL-2009 08:08:39
47692 ALL$OLAP2_CATALOGS 28-JUL-2009 08:08:39
47665 ALL$OLAPMR_FACTTBLKEYMAPS 28-JUL-2009 08:08:39
47688 ALL$OLAP2_DIM_LEVEL_ATTR_MAPS 28-JUL-2009 08:08:39
47689 ALL$OLAP2_DIM_LEVELS_KEYMAPS 28-JUL-2009 08:08:39
47669 ALL$OLAP9I2_HIER_DIMENSIONS 28-JUL-2009 08:08:39
47666 ALL$OLAP9I1_HIER_DIMENSIONS 28-JUL-2009 08:08:39
11 rows selected.
SQL> select object_id, object_name, last_ddl_time from t, (select rid, rownum rn from (select rowid rid from t order by last_ddl_time desc) where rownum <= 1200) t1 where rn >= 1190 and t.rowid = t1.rid ;
OBJECT_ID OBJECT_NAME LAST_DDL_TIME
11749 /b9fe5b99_OraRTStatementComman 06-FEB-2010 03:43:49
13133 oracle/jdbc/driver/OracleLog$3 06-FEB-2010 03:45:44
37534 com/sun/mail/smtp/SMTPMessage 06-FEB-2010 03:46:14
36145 /4e492b6f_SerProfileToClassErr 06-FEB-2010 03:11:09
26815 /7a628fb8_DefaultHSBChooserPan 06-FEB-2010 03:26:55
16695 /2940a364_RepIdDelegator_1_3 06-FEB-2010 03:38:17
36539 sun/io/ByteToCharMacHebrew 06-FEB-2010 03:28:57
14044 /d29b81e1_OldHeaders 06-FEB-2010 03:12:12
12920 /25f8f3a5_BasicSplitPaneUI 06-FEB-2010 03:11:06
42266 SI_GETCLRHSTGRFTR 06-FEB-2010 03:40:20
15752 /2f494dce_JDWPThreadReference 06-FEB-2010 03:09:31
11 rows selected.
SQL> select object_id, object_name, last_ddl_time from (select t1.*, rownum rn from (select * from t order by last_ddl_time desc) t1 where rownum <= 1200) where rn >= 1190 ;
OBJECT_ID OBJECT_NAME LAST_DDL_TIME
37534 com/sun/mail/smtp/SMTPMessage 06-FEB-2010 03:46:14
13133 oracle/jdbc/driver/OracleLog$3 06-FEB-2010 03:45:44
11749 /b9fe5b99_OraRTStatementComman 06-FEB-2010 03:43:49
42266 SI_GETCLRHSTGRFTR 06-FEB-2010 03:40:20
16695 /2940a364_RepIdDelegator_1_3 06-FEB-2010 03:38:17
36539 sun/io/ByteToCharMacHebrew 06-FEB-2010 03:28:57
26815 /7a628fb8_DefaultHSBChooserPan 06-FEB-2010 03:26:55
14044 /d29b81e1_OldHeaders 06-FEB-2010 03:12:12
36145 /4e492b6f_SerProfileToClassErr 06-FEB-2010 03:11:09
12920 /25f8f3a5_BasicSplitPaneUI 06-FEB-2010 03:11:06
15752 /2f494dce_JDWPThreadReference 06-FEB-2010 03:09:31
11 rows selected.
SQL> select object_id, object_name, last_ddl_time from t, (select rid, rownum rn from (select rowid rid from t order by last_ddl_time desc) where rownum <= 1200) t1 where rn >= 1190 and t.rowid = t1.rid order by last_ddl_time desc ;
OBJECT_ID OBJECT_NAME LAST_DDL_TIME
37534 com/sun/mail/smtp/SMTPMessage 06-FEB-2010 03:46:14
13133 oracle/jdbc/driver/OracleLog$3 06-FEB-2010 03:45:44
11749 /b9fe5b99_OraRTStatementComman 06-FEB-2010 03:43:49
42266 SI_GETCLRHSTGRFTR 06-FEB-2010 03:40:20
16695 /2940a364_RepIdDelegator_1_3 06-FEB-2010 03:38:17
36539 sun/io/ByteToCharMacHebrew 06-FEB-2010 03:28:57
26815 /7a628fb8_DefaultHSBChooserPan 06-FEB-2010 03:26:55
14044 /d29b81e1_OldHeaders 06-FEB-2010 03:12:12
36145 /4e492b6f_SerProfileToClassErr 06-FEB-2010 03:11:09
12920 /25f8f3a5_BasicSplitPaneUI 06-FEB-2010 03:11:06
15752 /2f494dce_JDWPThreadReference 06-FEB-2010 03:09:31
11 rows selected.
SQL> set autotrace traceonly
SQL> select object_id, object_name, last_ddl_time from t, (select rid, rownum rn from (select rowid rid from t order by last_ddl_time desc) where rownum <= 1200) t1 where rn >= 1190 and t.rowid = t1.rid order by last_ddl_time desc
2 ;
11 rows selected.
Execution Plan
Plan hash value: 44968669
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1200 | 91200 | 180 (2)| 00:00:03 |
| 1 | SORT ORDER BY | | 1200 | 91200 | 180 (2)| 00:00:03 |
|* 2 | HASH JOIN | | 1200 | 91200 | 179 (2)| 00:00:03 |
|* 3 | VIEW | | 1200 | 30000 | 98 (0)| 00:00:02 |
|* 4 | COUNT STOPKEY | | | | | |
| 5 | VIEW | | 40617 | 475K| 98 (0)| 00:00:02 |
| 6 | INDEX FULL SCAN DESCENDING| T_IDX | 40617 | 793K| 98 (0)| 00:00:02 |
| 7 | TABLE ACCESS FULL | T | 40617 | 2022K| 80 (2)| 00:00:01 |
Predicate Information (identified by operation id):
2 - access("T".ROWID="T1"."RID")
3 - filter("RN">=1190)
4 - filter(ROWNUM<=1200)
Statistics
1 recursive calls
0 db block gets
348 consistent gets
0 physical reads
0 redo size
1063 bytes sent via SQL*Net to client
385 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
11 rows processed
SQL> select object_id, object_name, last_ddl_time from (select t1.*, rownum rn from (select * from t order by last_ddl_time desc) t1 where rownum <= 1200) where rn >= 1190 ;
11 rows selected.
Execution Plan
Plan hash value: 882605040
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1200 | 62400 | 80 (2)| 00:00:01 |
|* 1 | VIEW | | 1200 | 62400 | 80 (2)| 00:00:01 |
|* 2 | COUNT STOPKEY | | | | | |
| 3 | VIEW | | 40617 | 1546K| 80 (2)| 00:00:01 |
|* 4 | SORT ORDER BY STOPKEY| | 40617 | 2062K| 80 (2)| 00:00:01 |
| 5 | TABLE ACCESS FULL | T | 40617 | 2062K| 80 (2)| 00:00:01 |
Predicate Information (identified by operation id):
1 - filter("RN">=1190)
2 - filter(ROWNUM<=1200)
4 - filter(ROWNUM<=1200)
Statistics
0 recursive calls
0 db block gets
343 consistent gets
0 physical reads
0 redo size
1063 bytes sent via SQL*Net to client
385 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
11 rows processed
SQL> select object_id, object_name, last_ddl_time from t, (select rid, rownum rn from (select rowid rid from t order by last_ddl_time desc) where rownum <= 1200) t1 where rn >= 1190 and t.rowid = t1.rid ;
11 rows selected.
Execution Plan
Plan hash value: 168880862
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1200 | 91200 | 179 (2)| 00:00:03 |
|* 1 | HASH JOIN | | 1200 | 91200 | 179 (2)| 00:00:03 |
|* 2 | VIEW | | 1200 | 30000 | 98 (0)| 00:00:02 |
|* 3 | COUNT STOPKEY | | | | | |
| 4 | VIEW | | 40617 | 475K| 98 (0)| 00:00:02 |
| 5 | INDEX FULL SCAN DESCENDING| T_IDX | 40617 | 793K| 98 (0)| 00:00:02 |
| 6 | TABLE ACCESS FULL | T | 40617 | 2022K| 80 (2)| 00:00:01 |
Predicate Information (identified by operation id):
1 - access("T".ROWID="T1"."RID")
2 - filter("RN">=1190)
3 - filter(ROWNUM<=1200)
Statistics
0 recursive calls
0 db block gets
349 consistent gets
0 physical reads
0 redo size
1063 bytes sent via SQL*Net to client
385 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
11 rows processed
SQL> select object_id, object_name, last_ddl_time from (select t1.*, rownum rn from (select * from t order by last_ddl_time desc) t1 where rownum <= 1200) where rn >= 1190 order by last_ddl_time desc ;
11 rows selected.
Execution Plan
Plan hash value: 882605040
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1200 | 62400 | 80 (2)| 00:00:01 |
|* 1 | VIEW | | 1200 | 62400 | 80 (2)| 00:00:01 |
|* 2 | COUNT STOPKEY | | | | | |
| 3 | VIEW | | 40617 | 1546K| 80 (2)| 00:00:01 |
|* 4 | SORT ORDER BY STOPKEY| | 40617 | 2062K| 80 (2)| 00:00:01 |
| 5 | TABLE ACCESS FULL | T | 40617 | 2062K| 80 (2)| 00:00:01 |
Predicate Information (identified by operation id):
1 - filter("RN">=1190)
2 - filter(ROWNUM<=1200)
4 - filter(ROWNUM<=1200)
Statistics
175 recursive calls
0 db block gets
388 consistent gets
0 physical reads
0 redo size
1063 bytes sent via SQL*Net to client
385 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
4 sorts (memory)
0 sorts (disk)
11 rows processed
SQL> set autotrace off
SQL> spool offAs you will see, the join query here has to have an ORDER BY clause at the end to ensure that records are correctly sorted. You can not rely on optimizer choosing NESTED LOOP join method and, as above example shows, when optimizer chooses HASH JOIN, oracle is free to return rows in no particular order.
The query that does not involve join always returns rows in the desired order. Adding an ORDER BY does add a step in the plan for the query using join but does not affect the other query. -
DataGrid does not display XML data
Hello, and thanks for reading this...
I am having a problem displaying XMLList data in a DataGrid.
The data is coming from a Tree control, which is receiving it
from a database using HTTPService.
The data is a list of "Job Orders" from a MySQL database,
being formatted as XML by a PHP page.
If it would be helpful to see the actual XML, a sample is
here:
http://www.anaheimwib.com/_login/get_all_orders_test2.php
All is going well until I get to the DataGrid, which doesn't
display the data, although I know it is there as I can see it in
debug mode. I've checked the dataField property of the appropriate
DataGrid column, and it appears correct.
Following is a summary of the relevant code.
...An HTTPService named "get_all_job_orders" retrieves
records from a MySQL database via PHP...
...Results are formatted as E4X:
HTTPService resultFormat="e4x"
...An XMLListCollection's source property is set to the
returned E4X XML results:
...The "order" node is what is being used as the top-level of
the XML data.
<mx:XMLListCollection id="jobOrdersReviewXMLList"
source="{get_all_job_orders.lastResult.order}"/>
...The "jobOrdersReviewXMLList" collection is assigned to be
the dataProvider property of a Tree list, using the @name syntax to
display the nodes correctly, and a change event function is defined
to add the records to a DataGrid on a separate Component for
viewing the XML records:
<mx:Tree dataProvider="{jobOrdersReviewXMLList}"
labelField="@name"
change="jobPosForm.addTreePositionsToDG(event)"/>
...Here is the relevant "jobPosForm" code (the Job Positions
Form, a separate Component based on a Form) :
...A variable is declared:
[Bindable]
public var positionsArray:XMLList;
...The variable is initialized on CreationComplete event of
the Form:
positionsArray = new XMLList;
...The Tree's change event function is defined within the
"jobPosForm" Component.
...Clicking on a Tree node fires the Change event.
...This passes an event object to the function.
...This event object contains the XML from the selected Tree
node.
...The Tree node's XML data is passed into the positionsArray
XMLList.
...This array is the dataProvider for the DataGrid, as you
will see in the following block.
public function addTreePositionsToDG(event:Event):void{
this.positionsArray = selectedNode.positions.position;
...A datagrid has its dataProvider is bound to
positionsArray.
...(I will only show one column defined here for brevity.)
...This column has its dataField property set to "POS_TITLE",
a field in the returned XML record:
<mx:DataGrid width="100%" variableRowHeight="true"
height="75%" id="dgPositions"
dataProvider="{positionsArray}" editable="false">
<mx:columns>
<mx:DataGridColumn width="25" headerText="Position Title"
dataField="POS_TITLE"/>
</mx:columns>
</mx:DataGrid>
In debug mode, I can examine the datagrid's dataProvider
property, and see that the correct XML data from the Tree control
is present. However, The datagrid does not display the data in any
of its 6 columns.
Does anyone have any advice?
Thanks for your time.Hello again,
I came up with a method of populating the DataGrid from the
selected Item of a Tree Control which displays complex XML data and
XML attributes. After the user clicks on a Tree branch, I call this
function:
public function addTreePositionsToDG(event:Event):void{
//Retrieve all "position" nodes from tree.
//Loop thru each Position.
//Add Position data to the positionsArray Array Collection.
//The DataGrid dataprovider is bound to this array, and will
be updated.
positionsArray = new ArrayCollection();
var selectedNode:Object=event.target.selectedItem;//Contains
entire branch.
for each (var position:XML in
selectedNode.positions.position){
var posArray:Array = new Array();
posArray.PK_POSITIONID = position.@PK_POSITIONID;
posArray.FK_ORDERID = position.@FK_ORDERID;
posArray.POS_TITLE = position.@POS_TITLE;
posArray.NUM_YOUTH = position.@NUM_YOUTH;
posArray.AGE_1617 = position.@AGE_1617;
posArray.AGE_1821 = position.@AGE_1821;
posArray.HOURS_WK = position.@HOURS_WK;
posArray.WAGE_RANGE_FROM = position.@WAGE_RANGE_FROM;
posArray.WAGE_RANGE_TO = position.@WAGE_RANGE_TO;
posArray.JOB_DESCR = position.@JOB_DESCR;
posArray.DES_SKILLS = position.@DES_SKILLS;
positionsArray.addItem(posArray);
So, I just had to manually go through the selected Tree node,
copy each XML attribute into a simple Array, then ADD this Array to
an ArrayCollection being used as the DataProvider for the DataGrid.
It's not elegant, but it works and I don't have to use a Label
Function, which was getting way too complicated. I still think that
Flex should have an easier way of doing this. There probably is an
easier way, but the Flex documentation doesn't provide an easy path
to it.
I want to thank you, Tracy, for the all the help. I checked
out the examples you have at www.cflex.net and they are very
helpful. I bookmarked the site and will be using it as a resource
from now on.
Maybe you are looking for
-
Itunes Radio does not operate on my IPad. All stations are unavailable
I have downloaded the newest version of ITunes on both my IPhone and IPad. I can use ITunes Radio on my IPhone, but not my IPad. It comes up, but all the stations say that they are unavailable. I am at home with wi-fi. What's going on?
-
Restoring iCal from Time Machine/Older HD
SO here's the deal. I upgraded my harddrive in my MBP over the weekend. Doubled it size to 500GB joy! What I decided to do once I got a blank copy of Lion on it was to restore just the user info, system settings and "other files" from the Time Machin
-
How can I get Adobe Reader for a PC with no Internet access?
Hi I have a neighbour who doesn't have Internet access. I have downloaded the installer but the installer requires Internet access. Can I install it on my computer and copy the program file or folder to my neighbours computer? Thanks Geoff
-
BRING BACK DROP SHADOW IN TEXT
Bring back the option to apply a drop shadow effect to text immediately!
-
Performance issues in iOS- Animations run really slow. (CS5.5/AS3)
I have created an app in CS5.5 for Android and iOS. I have tested on two Android devices and everyingthing works fine. However, on an iPad and iPhone the animations are really slow. Here are some more facts: 1) My project has many scenes and in the