Filtering problem in gridview using LLBLGenProDataSource

Posts   
 
    
Posts: 77
Joined: 05-May-2005
# Posted on: 17-Feb-2011 02:02:07   

I have a gridview that is bound to an LLBLGenProDataSource with a SQL Server 2008 table as its source. The grid has 15 rows per page and there are 35 pages of data total. I have some textboxes on my page and the user fills in the filter dates and clicks a button to filter the data. I am testing cases where the rows matching my inputs are on page 35. When I am on page 1, the filtering works perfectly. But if I go to page 5 and then try to filter using the exact same criteria, no rows are displayed in the grid. I can see that on page 5 it is applying the filter only to the rows on that page. Is there a property that I need to change to make it always filter on all records - not just the ones on a page? In other words, it should always work like the page 1 debug example I have pasted in below. I am using LLBLGen v2.6 Final from Oct. 9, 2009 with runtime version 2.6.09.0903 and I'm targetting the .NET 3.5 Framework.

These are the queries that exectue when I am on PAGE 1

(--reformatted) Executed Sql Query: Query: SELECT COUNT(*) AS NumberOfRows FROM (SELECT DISTINCT [SBS].[dbo].[EU66].[INSERT_SEQUENCE] AS [InsertSequence], [SBS].[dbo].[EU66].[DEVICE_ID] AS [DeviceId], [SBS].[dbo].[EU66].[MESSAGE_ID] AS [MessageId], [SBS].[dbo].[EU66].[FAILURE_DTM] AS [FailureDtm], [SBS].[dbo].[EU66].[FAIL_CD] AS [FailCd], [SBS].[dbo].[EU66].[STATUS_IND] AS [StatusInd], [SBS].[dbo].[EU66].[REGISTER_1] AS [Register1], [SBS].[dbo].[EU66].[REGISTER_2] AS [Register2] FROM ( [SBS].[dbo].[DEVICE] INNER JOIN [SBS].[dbo].[EU66] ON [SBS].[dbo].[DEVICE].[DEVICE_ID]=[SBS].[dbo].[EU66].[DEVICE_ID] AND ( ( [SBS].[dbo].[DEVICE].[DELETED_DTM] IS NULL))) WHERE ( ( ( ( [SBS].[dbo].[EU66].[FAILURE_DTM] >= @FailureDtm1) AND ( [SBS].[dbo].[EU66].[FAILURE_DTM] <= @FailureDtm2))))) TmpResult Parameter: @FailureDtm1 : DateTime. Length: 0. Precision: 0. Scale: 0. Direction: Input. Value: 1/13/2011 10:36:00 AM. Parameter: @FailureDtm2 : DateTime. Length: 0. Precision: 0. Scale: 0. Direction: Input. Value: 1/13/2011 10:55:00 AM.

Method Exit: DaoBase.ExecuteScalarQuery Method Enter: DaoBase.PerformGetMultiAction Method Enter: DaoBase.ExecuteMultiRowRetrievalQuery Executed Sql Query: Query: SELECT DISTINCT TOP 15 [SBS].[dbo].[EU66].[INSERT_SEQUENCE] AS [InsertSequence], [SBS].[dbo].[EU66].[DEVICE_ID] AS [DeviceId], [SBS].[dbo].[EU66].[MESSAGE_ID] AS [MessageId], [SBS].[dbo].[EU66].[FAILURE_DTM] AS [FailureDtm], [SBS].[dbo].[EU66].[FAIL_CD] AS [FailCd], [SBS].[dbo].[EU66].[STATUS_IND] AS [StatusInd], [SBS].[dbo].[EU66].[REGISTER_1] AS [Register1], [SBS].[dbo].[EU66].[REGISTER_2] AS [Register2] FROM ( [SBS].[dbo].[DEVICE] INNER JOIN [SBS].[dbo].[EU66] ON [SBS].[dbo].[DEVICE].[DEVICE_ID]=[SBS].[dbo].[EU66].[DEVICE_ID] AND ( ( [SBS].[dbo].[DEVICE].[DELETED_DTM] IS NULL))) WHERE ( ( ( ( [SBS].[dbo].[EU66].[FAILURE_DTM] >= @FailureDtm1) AND ( [SBS].[dbo].[EU66].[FAILURE_DTM] <= @FailureDtm2)))) ORDER BY [SBS].[dbo].[EU66].[FAILURE_DTM] DESC Parameter: @FailureDtm1 : DateTime. Length: 0. Precision: 0. Scale: 0. Direction: Input. Value: 1/13/2011 10:36:00 AM.

Parameter: @FailureDtm2 : DateTime. Length: 0. Precision: 0. Scale: 0. Direction: Input. Value: 1/13/2011 10:55:00 AM.

These are the queries that exectue when I am on PAGE 5 Executed Sql Query: Query: SELECT COUNT(*) AS NumberOfRows FROM (SELECT DISTINCT [SBS].[dbo].[EU66].[INSERT_SEQUENCE] AS [InsertSequence], [SBS].[dbo].[EU66].[DEVICE_ID] AS [DeviceId], [SBS].[dbo].[EU66].[MESSAGE_ID] AS [MessageId], [SBS].[dbo].[EU66].[FAILURE_DTM] AS [FailureDtm], [SBS].[dbo].[EU66].[FAIL_CD] AS [FailCd], [SBS].[dbo].[EU66].[STATUS_IND] AS [StatusInd], [SBS].[dbo].[EU66].[REGISTER_1] AS [Register1], [SBS].[dbo].[EU66].[REGISTER_2] AS [Register2] FROM ( [SBS].[dbo].[DEVICE] INNER JOIN [SBS].[dbo].[EU66] ON [SBS].[dbo].[DEVICE].[DEVICE_ID]=[SBS].[dbo].[EU66].[DEVICE_ID] AND ( ( [SBS].[dbo].[DEVICE].[DELETED_DTM] IS NULL))) WHERE ( ( ( ( [SBS].[dbo].[EU66].[FAILURE_DTM] >= @FailureDtm1) AND ( [SBS].[dbo].[EU66].[FAILURE_DTM] <= @FailureDtm2))))) TmpResult Parameter: @FailureDtm1 : DateTime. Length: 0. Precision: 0. Scale: 0. Direction: Input. Value: 1/13/2011 10:36:00 AM. Parameter: @FailureDtm2 : DateTime. Length: 0. Precision: 0. Scale: 0. Direction: Input. Value: 1/13/2011 10:55:00 AM.

Method Exit: DaoBase.ExecuteScalarQuery Method Enter: DaoBase.PerformGetMultiAction Method Enter: DaoBase.ExecuteMultiRowRetrievalQuery Executed Sql Query: Query: WITH __actualSet AS ( SELECT *, ROW_NUMBER() OVER (ORDER BY CURRENT_TIMESTAMP) AS __rowcnt FROM (SELECT DISTINCT TOP 75 [SBS].[dbo].[EU66].[INSERT_SEQUENCE] AS [InsertSequence], [SBS].[dbo].[EU66].[DEVICE_ID] AS [DeviceId], [SBS].[dbo].[EU66].[MESSAGE_ID] AS [MessageId], [SBS].[dbo].[EU66].[FAILURE_DTM] AS [FailureDtm], [SBS].[dbo].[EU66].[FAIL_CD] AS [FailCd], [SBS].[dbo].[EU66].[STATUS_IND] AS [StatusInd], [SBS].[dbo].[EU66].[REGISTER_1] AS [Register1], [SBS].[dbo].[EU66].[REGISTER_2] AS [Register2] FROM ( [SBS].[dbo].[DEVICE] INNER JOIN [SBS].[dbo].[EU66] ON [SBS].[dbo].[DEVICE].[DEVICE_ID]=[SBS].[dbo].[EU66].[DEVICE_ID] AND ( ( [SBS].[dbo].[DEVICE].[DELETED_DTM] IS NULL))) WHERE ( ( ( ( [SBS].[dbo].[EU66].[FAILURE_DTM] >= @FailureDtm1) AND ( [SBS].[dbo].[EU66].[FAILURE_DTM] <= @FailureDtm2)))) ORDER BY [SBS].[dbo].[EU66].[FAILURE_DTM] DESC) AS _tmpSet) SELECT [InsertSequence], [DeviceId], [MessageId], [FailureDtm], [FailCd], [StatusInd], [Register1], [Register2] FROM __actualSet WHERE [__rowcnt] > @__rownoStart AND [__rowcnt] <= @__rownoEnd ORDER BY [__rowcnt] ASC Parameter: @FailureDtm1 : DateTime. Length: 0. Precision: 0. Scale: 0. Direction: Input. Value: 1/13/2011 10:36:00 AM. Parameter: @FailureDtm2 : DateTime. Length: 0. Precision: 0. Scale: 0. Direction: Input. Value: 1/13/2011 10:55:00 AM. Parameter: @__rownoStart : Int32. Length: 4. Precision: 10. Scale: 0. Direction: Input. Value: 60. Parameter: @__rownoEnd : Int32. Length: 4. Precision: 10. Scale: 0. Direction: Input. Value: 75.

daelmo avatar
daelmo
Support Team
Posts: 8245
Joined: 28-Nov-2005
# Posted on: 17-Feb-2011 06:34:37   

We need to see your relevant ASPX (LLBLGenProDataSource and Grid) and behind code (LLBLGenProDataSource events, search routine) to see what is going on. Specially: Are you using livePersistence=true/false? How exactly are you filtering the user request?

David Elizondo | LLBLGen Support Team
Otis avatar
Otis
LLBLGen Pro Team
Posts: 39613
Joined: 17-Aug-2003
# Posted on: 17-Feb-2011 10:06:49   

Also be sure you run the latest runtime lib, at the moment you don't.

Frans Bouma | Lead developer LLBLGen Pro
Posts: 77
Joined: 05-May-2005
# Posted on: 01-Mar-2011 19:55:11   

I resolved this by setting LivePersistence to false and then resetting the page number to 1 every time new filter criteria is entered. If you have a better idea, I'm open to suggestions.