Poniższy kod - browse dla pojedynczej tablicy na kontrolce UtraGrid uruchamia się b.szybko - ok. 1sek.

Ale sortowanie w browsie (kliknięcie w nagłówek kolumny), trwa ok. 30-40 sek (tablica ma ok.40.000 rekordów).

W tym czasie procesor dostaje obciążenia niemal 100%, a transfer po sieci LAN pokazuje wysoki %.

Męczę się z tym parę godzin ...

Ma ktoś jakiś pomysł co to może być?

/* QueryBinding.p
Bind to a Customer query and display the entire table in an Infragistics
UltraWinGrid */
/* USING statements must be the first in the procedure. Note that you could
have USING statements for the OpenEdge classes also.*/
USING System.Windows.Forms.*.
USING Infragistics.Win.UltraWinGrid.*.
DEFINE VARIABLE rMainForm AS Progress.Windows.Form NO-UNDO.
DEFINE VARIABLE rCustGrid AS UltraGrid NO-UNDO.
DEFINE VARIABLE rBindS AS Progress.Data.BindingSource NO-UNDO.
DEFINE VARIABLE controls AS Control+ControlCollection NO-UNDO.
DEFINE VARIABLE hCustQuery AS HANDLE NO-UNDO.
CREATE QUERY hCustQuery.
hCustQuery:SET-BUFFERS(BUFFER a_asortyment:HANDLE).
hCustQuery:QUERY-PREPARE("PRESELECT EACH a_asortyment").
hCustQuery:QUERY-OPEN.
/* This will display all of the Customer fields in the grid. */
rBindS = NEW Progress.Data.BindingSource(hCustQuery).
/* Alternately, specify fields using the optional include-fields and
except-fields lists. */
/* rBindS = NEW Progress.Data.BindingSource(hCustQuery,
"CustNum,Name,Address,City,PostalCode,Phone,Contact,Salesrep",""). */
/* Disable editing because procedure does not include event logic to handle
changes. */
rBindS:AllowEdit = FALSE.
rBindS:AllowRemove = FALSE.
/* Main block */
IF VALID-OBJECT(rBindS) THEN
DO ON ERROR UNDO, LEAVE:
rMainForm = NEW Progress.Windows.Form().
rMainForm:Width = 840.
rMainForm:Height = 500.
rMainForm:Text = "Customer Form".
rCustGrid = NEW UltraGrid().
rCustGrid:Left = 10.
rCustGrid:Top = 10.
rCustGrid:Width = 810.
rCustGrid:Height = 420.
rCustGrid:Name = "CustomerGrid".
rCustGrid:Text = "Customer Grid".
rCustGrid:DataSource = rBindS.
rCustGrid:TabIndex = 1.


/*Hide the first column, as it is unnecessary*/
/*rCustGrid:DisplayLayout:Bands[0]:Columns["OID"]:Hidden = TRUE.*/


/* Enable grid column filtering through the use of header icons*/
rCustGrid:DisplayLayout:Override:FilterUIType = FilterUIType:HeaderIcons.
/* Perform a column RESIZE */
/* rCustGrid:DisplayLayout:PerformAutoResizeColumns(false, PerformAutoSizeType:AllRowsInBand).*/


rCustGrid:DisplayLayout:Override:AllowColSizing = AllowColSizing:Free.
rCustGrid:DisplayLayout:Override:HeaderClickAction = HeaderClickAction:SortSingle /*SortMulti*/ /*ExternalSortSingle*/.
/*rCustGrid:DisplayLayout:ScrollStyle = ScrollStyle:Immediate.*/

rCustGrid:Name = "UltraGrid1".

controls = rMainForm:Controls.
controls:Add(rCustGrid).
WAIT-FOR Application:RUN(rMainForm).
END. /* Main block */