Paging using ASPxGridView

Posts   
1  /  2  /  3  /  4
 
    
Otis avatar
Otis
LLBLGen Pro Team
Posts: 39588
Joined: 17-Aug-2003
# Posted on: 15-May-2008 20:17:32   

tzarger wrote:

WayneBrantley wrote:

I think this thread has 'morphed' a bit from 'zeros passed into datasource control' to 'all records returned when grouping/sorting a grid'.

The ultimate problem here, ASPxGridView NEVER passes paging information, regardless if you do anything like sorting, grouping, filtering, etc. There is also no way to set a VirtualItemCount either...

So therein lies the root of the problem. No Paging info, ever.

Nail on the head!

Frans Bouma | Lead developer LLBLGen Pro
Otis avatar
Otis
LLBLGen Pro Team
Posts: 39588
Joined: 17-Aug-2003
# Posted on: 15-May-2008 21:08:13   

(UPDATE: 20-may-2008 ). I normally don't edit old posts, but as this contained an advice which is no longer valid, I've updated it. DevExpress has reported that they'll add an option to enable regular paging on datasourcecontrols in 2008.1.4.

Original post: This gets out of hand... Mike Falcon replies in that thread with precisely the unacceptable drivel which makes this issue so crappy. DevExpress contacted us that they want to solve this, but when I read posts like that one from Mike, I have no hope.

The thing is: I'm fed up with marketing BS from control vendors that it works oh so great and all the shiny pretty pictures. Bottom line is that it doesn't work.

To all the people reading this and who are in doubt what to do: **don't buy devexpress webgrids** until you've heard from THEM that it works 100%. Test competing grids. Our datasourcecontrols are mature, and work fine with a wide range of grids out there. Don't believe the pretty pictures, at the end of the day, you have to rely on the quality of the controls you work with. If these let you down, you're in trouble, so make the choice wisely.

So, there. I'm sick of it. rage

Frans Bouma | Lead developer LLBLGen Pro
tzarger
User
Posts: 87
Joined: 14-Jun-2007
# Posted on: 15-May-2008 21:19:51   

Yeah, I think they are too close to the problem, and have blinders on or something. I fear this issue will go unresolved as they seem to think Linq is the only way to go outside of their XPO product. I generated the XPO classes for giggles, and their XPO product is horrible at best, very immature, unuseable in my opinion, and not even close to a real solution either.

That response from Mike Falcon was a bit disappointing. Nice response Frans, it seems they just don't get it. If they would just give paging parameters to a datasource control, I would be happy... I don't use the summaries/totals anyway.

tzarger
User
Posts: 87
Joined: 14-Jun-2007
# Posted on: 15-May-2008 21:23:08   

WayneBrantley wrote:

I have just submitted a support ticket to Telerik and pointed them to this thread. Let's see what they have to say. If they do not respond, I could prepare a demo to check/prove this scenario.

Hi Wayne, I am thinking about invoking my DevExpress 60 Day Money back guarantee ... can you create a small project (using Telerik controls) to prove that you can you the LLBLGenProDataSource out of the box and support paging with sorting, filtering and group... Summaries/totals, not necessary... however if it can do that too, all the better.

Posts: 1251
Joined: 10-Mar-2006
# Posted on: 15-May-2008 22:46:49   

Here is what I did:

1) Drop LLBLGenProDataSource on webform, hook it to one of my collections. 2) Drop Telerik RadGrid from ASP.NET AJAX release on webform. 3) Wire RadGrid to datasource, turn on paging and sorting. 4) Run webform in debugger.

With LLBLGen diagnostics on, I then examined the output window results, which shows the queries.

I CAN CONFIRM the queries were using paging information. I sorted and navigated the grid and it always executed page based queries.

1) Turn on Grouping The grid CONTINUED to use paging queries when I did not 'group' anything in the grid. Once I grouped a column, the grid pulled ALL query results and did not page. Ungrouping and it went back to paging.

2) Turn on Summary The grid pulled ALL query results and did not page.

Of course as I mentioned before, if you turn on custom paging you can take the paging parameters (like I showed before) and only return the proper part of the query for the grid.  Then in a seperate query, subscribing to a seperate event you can provide the summary data by doing another query.  So, you do have the ability to make this perform well with a little code.

Again, this is all using drag and drop, no code, nothing. Works much as we would expect it to.

tzarger - I will be needing you to buy my lunch....or maybe I should ask Telerik to. smile

habba
User
Posts: 3
Joined: 15-May-2008
# Posted on: 15-May-2008 23:05:05   

WayneBrantley wrote:

I CAN CONFIRM the queries were using paging information. I sorted and navigated the grid and it always executed page based queries.

1) Turn on Grouping The grid CONTINUED to use paging queries when I did not 'group' anything in the grid. Once I grouped a column, the grid pulled ALL query results and did not page. Ungrouping and it went back to paging.

WayneBrantley wrote:

2) Turn on Summary The grid pulled ALL query results and did not page.

What will happens with asp.net server if data was large enough (like 5m records) ?

WayneBrantley wrote:

Again, this is all using drag and drop, no code, nothing. Works much as we would expect it to.

What about filtering? Requery whole dataset?

Posts: 1251
Joined: 10-Mar-2006
# Posted on: 15-May-2008 23:26:39   

What will happens with asp.net server if data was large enough (like 5m records) ?

This thread is about DevExpress not giving paging information in ANY circumstance. However, in reference to your question - if you have that many records, you had better do a little code behind to do the custom grouping and provide the values to the grid.

Filtering - I did not turn that on and try it. I do not work for Telerik wink just trying to help a fellow 'stuck' LLBLGen'er.

simple_smile

braidiano
User
Posts: 40
Joined: 18-Nov-2006
# Posted on: 15-May-2008 23:53:10   

Otis wrote:

This gets out of hand... Mike Falcon replies in that thread with precisely the unacceptable drivel which makes this issue so crappy. DevExpress contacted us that they want to solve this, but when I read posts like that one from Mike, I have no hope.

The thing is: I'm fed up with marketing BS from control vendors that it works oh so great and all the shiny pretty pictures. Bottom line is that it doesn't work.

To all the people reading this and who are in doubt what to do: don't buy devexpress webgrids until you've heard from THEM that it works 100%. Test competing grids. Our datasourcecontrols are mature, and work fine with a wide range of grids out there. Don't believe the pretty pictures, at the end of the day, you have to rely on the quality of the controls you work with. If these let you down, you're in trouble, so make the choice wisely.

So, there. I'm sick of it. rage

I read on DevExpress CTO blog (in the last post) that they wants to collaborate and to talk with you by phone to solve the issue.. or to discuss.. did you read it?

tzarger
User
Posts: 87
Joined: 14-Jun-2007
# Posted on: 16-May-2008 00:00:22   

Yeah, I read that too.. however, they act like this is a LLBLGenProDataSource issue...and this problem extends to all DataSource Control creators...

Now if they want to use LLBLGen to test their fixes, perhaps Frans would be interested... however, not sure their thoughts and intentions. There is nothing here for Frans to "fix" ...

braidiano
User
Posts: 40
Joined: 18-Nov-2006
# Posted on: 16-May-2008 00:15:01   

tzarger wrote:

Yeah, I read that too.. however, they act like this is a LLBLGenProDataSource issue...and this problem extends to all DataSource Control creators...

Now if they want to use LLBLGen to test their fixes, perhaps Frans would be interested... however, not sure their thoughts and intentions. There is nothing here for Frans to "fix" ...

I understud that there are nothing to fix in LLBLGen DataSource controls, and I agree with you. But, maybe they (Frans and DevExpress Team) can find a solution together rather than continue to make controversy on the blog and forums, telling each other that wants to put a spoke in the wheels to another, and telling about conspiracy... simple_smile

they offered to pay the long-distance phone call ... why not take advantage? stuck_out_tongue_winking_eye

tzarger
User
Posts: 87
Joined: 14-Jun-2007
# Posted on: 16-May-2008 00:18:48   

braidiano wrote:

I understud that there are nothing to fix in LLBLGen DataSource controls, and I agree with you. But, maybe they (Frans and DevExpress Team) can find a solution together rather than continue to make controversy on the blog and forums, telling each other that wants to put a spoke in the wheels to another, and telling about conspiracy... simple_smile

LOL, I agree.. Although I think it is kind of funny to see the response on the blog... I got a message to my support ticket there, and they tell me paging information will be sent to the SelectParamaters in a DataSource control, but filtering, grouping and summaries will not be available... small victories I suppose... however I do not understand why filtering would be missing... just another SelectParameter...

braidiano
User
Posts: 40
Joined: 18-Nov-2006
# Posted on: 16-May-2008 00:23:04   

tzarger wrote:

braidiano wrote:

I understud that there are nothing to fix in LLBLGen DataSource controls, and I agree with you. But, maybe they (Frans and DevExpress Team) can find a solution together rather than continue to make controversy on the blog and forums, telling each other that wants to put a spoke in the wheels to another, and telling about conspiracy... simple_smile

LOL, I agree.. Although I think it is kind of funny to see the response on the blog... I got a message to my support ticket there, and they tell me paging information will be sent to the SelectParamaters in a DataSource control, but filtering, grouping and summaries will not be available... small victories I suppose... however I do not understand why filtering would be missing... just another SelectParameter...

But if the grid builds groups and summaries "on-the-fly" at client level, by javascript, why can't it groups or sums the visible data?

Posts: 1251
Joined: 10-Mar-2006
# Posted on: 16-May-2008 05:03:57   

Looks like DevExpress is willing and wants to resolve this for their customers. I know I have been on the 'Telerik' side, but DevExpress makes some good controls too.

We use their XtraReports and it works great.

JimFoye avatar
JimFoye
User
Posts: 656
Joined: 22-Jun-2004
# Posted on: 16-May-2008 06:39:37   

Just my two cents: I've been very pleased with their winforms controls. I started using their ASPX stuff about 6 months ago. I've been unhappy with the state of the documentation, which I think is not nearly as good as on the winforms side. But here's what I like about Devex; when I wrote to them complaining about it, I was invited to call their chief developer to discuss it (which I haven't done yet - trying to get my head above water so I can do so). They will listen to their customers, which is saying a lot! I think the ASPX product line is getting better. They constantly release new versions.

I've never used Telerik, but I've heard good things about them. I was already using Devex winfoms controls, so I really wanted to get on one vendor.

I hope Infragistics falls off the face of the Earth one day.

habba
User
Posts: 3
Joined: 15-May-2008
# Posted on: 16-May-2008 07:24:28   

tzarger wrote:

I got a message to my support ticket there, and they tell me paging information will be sent to the SelectParamaters in a DataSource control, but filtering, grouping and summaries will not be available... small victories I suppose... however I do not understand why filtering would be missing... just another SelectParameter...

Actually you can’t filter pass information into select. You limited to DataSourceSelectArguments: StartRowIndex, MaximumRows, RetrieveTotalRowCount, SortExpression.

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39588
Joined: 17-Aug-2003
# Posted on: 16-May-2008 10:00:57   

braidiano wrote:

Otis wrote:

This gets out of hand... Mike Falcon replies in that thread with precisely the unacceptable drivel which makes this issue so crappy. DevExpress contacted us that they want to solve this, but when I read posts like that one from Mike, I have no hope.

The thing is: I'm fed up with marketing BS from control vendors that it works oh so great and all the shiny pretty pictures. Bottom line is that it doesn't work.

To all the people reading this and who are in doubt what to do: don't buy devexpress webgrids until you've heard from THEM that it works 100%. Test competing grids. Our datasourcecontrols are mature, and work fine with a wide range of grids out there. Don't believe the pretty pictures, at the end of the day, you have to rely on the quality of the controls you work with. If these let you down, you're in trouble, so make the choice wisely.

So, there. I'm sick of it. rage

I read on DevExpress CTO blog (in the last post) that they wants to collaborate and to talk with you by phone to solve the issue.. or to discuss.. did you read it?

Yes, they also mailed me. First an email yesterday morning and then some not so friendly emails later.

I've spend too much time already on this. I agree with tzarger, it seems they want to make it our problem, well... I don't see how that can be the case. But whatever... it's not our grid, we can't change it, DevExpress can. If they think it's better in the way it operates now, who am I to tell them to change it? However, they can't tell me either what to use with our framework, as reality says there IS a problem with their grid using a datasourcecontrol and paging.

habba wrote:

tzarger wrote:

I got a message to my support ticket there, and they tell me paging information will be sent to the SelectParamaters in a DataSource control, but filtering, grouping and summaries will not be available... small victories I suppose... however I do not understand why filtering would be missing... just another SelectParameter...

Actually you can’t filter pass information into select. You limited to DataSourceSelectArguments: StartRowIndex, MaximumRows, RetrieveTotalRowCount, SortExpression.

Correct. Filtering isn't part of ExecuteSelect, that's done via SelectParameter instances or by setting a filter in the code behind on our datasourcecontrol. The problem is paging, these essential parameters aren't passed.

Frans Bouma | Lead developer LLBLGen Pro
Otis avatar
Otis
LLBLGen Pro Team
Posts: 39588
Joined: 17-Aug-2003
# Posted on: 16-May-2008 10:26:04   

tzarger wrote:

braidiano wrote:

I understud that there are nothing to fix in LLBLGen DataSource controls, and I agree with you. But, maybe they (Frans and DevExpress Team) can find a solution together rather than continue to make controversy on the blog and forums, telling each other that wants to put a spoke in the wheels to another, and telling about conspiracy... simple_smile

LOL, I agree.. Although I think it is kind of funny to see the response on the blog... I got a message to my support ticket there, and they tell me paging information will be sent to the SelectParamaters in a DataSource control, but filtering, grouping and summaries will not be available... small victories I suppose... however I do not understand why filtering would be missing... just another SelectParameter...

So they're going to fix this? As that would make it solved.

(edit) What I make out of it after re-re-re-reading what they're saying is that paging through a truckload of rows isn't really useful, because you get a lot of pages and you don't want to read them all, so you need filtering anyway, which results in small sets (assuming they mean this) and then there's no problem.

The thing is that the definition of a small set to cope with is subjective. Perhaps with pagesize 20, and 10 pages, the user is helped (combined with sorting) and the application performs ok, with a lot of users. However pulling these 200 rows per user from the db to the client can make it less performant (and above all, less scalable) so the user should have an option, a choice: page on the server, or on the client. Similar to our datasourcecontrol's sorting option: sort on the server or on the client.

I think if they build in such a choice, against whatever consequence (i.e. no more grouping etc.), it's OK, as otherwise you're using advanced, non-standard features of the grid, and the grid then can force you to implement some code, bind to some event etc. i.o.w.: the advanced features come at a price (they always do, in one way or the other). This is similar to our datasourcecontrol's advanced features: grids dont' support them out of the box, because grids work with the default DataSourceControl interface, not with our specific interface. We don't ask grid vendors to obey our interface so advanced features of our datasourcecontrol can be used, so vice versa shouldn't be asked for as well.

However, and this is important for all of you, IF you need use the advanced, non-standard, features of a grid, ANY grid, you, and you alone, have to take into account the price these advanced features come with: is the extra code, the event binding, the interface you have to implement etc. worth it? What's the effort you have to put into using another grid of another vendor to accomplish the same (i.e. use their advanced, non-standard features). We can't advice you on that, nor won't we do so, simply because it's not possible to advice you on that, you have to realize what the costs are for using any grid.

Though don't take this lightly: replacing a grid in an existing application or one which is far in development isn't a picknick, be it winforms or webforms, that's not important. So do a good analysis of these advanced non-standard features if you need them, and if so, if it's worth the effort / consequences you've to deal with when using them.

That's beside the point if a grid uses the default MS specification on the DataSourceControl derived class, i.e. sorting and paging. If these aren't met, sooner or later we will get the question if it's our fault that the stuff doesn't work because it might be that our datasourcecontrol perhaps has a bug. If we know in advance that a grid doesn't obey the DataSourceControl interface spec, we don't hesitate to inform our customers in this when we're asked about it, whoever the vendor is.

Now, let's hope DevExpress adds an option to switch on paging parameter passing to ExecuteSelect so we all can have a beer and a good weekend.

I also want to ask everyone to keep it modest here. We're all frustrated about this, and we all want to get things fixed but let's not make this thread a safehaven for bashing whatever product that's out there.

To DevExpress, who reads this thread, I'd like to say this as a closing comment: if a customer asks you to change something, and spends time explaining things to you and discussing things, the customer cares. Customers who don't give a **** about if an issue gets solved, don't care about explaining it to you nor spending time with you and with peers to discuss the issue at hand. Thank you.

Frans Bouma | Lead developer LLBLGen Pro
tzarger
User
Posts: 87
Joined: 14-Jun-2007
# Posted on: 16-May-2008 18:07:07   

Hi Frans, I want to be clear I am not bashing DevExpress, personally I think they have a great set of controls, great graphic designers, which set them apart from Telerik.

What I meant by saying I thought it was funny to see the responses on their blog, they take the time to write a blog to indicate they are going to work through the issue, or at least visit it to see if they can make any changes to support the datasource control specification, then in all the responses of DevExpress employees they responded as if you can do all you want to do no problem. So there is a contradiction there which indicates they are not going to change a thing... to me that is what is funny. I understand defending your product and making sure people understand what it can do today... But don't create statements that seems to indicate that they think there is no problem.

In every one of their responses, they talk about analysis of the data... to me that indicates read only... hence the summaries/totaling, all the bells and whistles... of course, if you use a standard datasource control for that, you lose paging... We all know there are tables out there with millions of records, and thus at that point, no matter how willing you are to use a standard datasource control and bring all that back, it literally makes it impossible, to big of hits on the database, servers and performance.

While it is nice for them to create their own IListServer interface, I have yet to see any real documentation on it, other than a tutorial (I am fairly new to DevExpress, so I just may not have seen it - so this most likely is not a DevExpress isssue, other thant they should point it out a bit more). Not to mention, that is pretty bold to think that all the other vendors should implement their proprietary interface, or even make developers write a wrapper, that is limited in functionality at best. Perhaps if the wrapper solutions gave me all the bells and whistles, I may be willing to do that. But not for getting the same functionality if they were to just pass paging information to any datasource control. Again, that is not bashing, just a point of view from a developer who has paid for their controls.

Okay, so they are right, you could whip out a LinqToSql DataContext, and use their LinqServerModeDataSource control for analysis, and that indeed works. Inserting, Editing, Deleting... just a tad bit of work, but doable... So hoooray!

But now, I am not only having LLBLGen classes for my data access, I know have LinqToSql in the mix... To me, rather duplicative, although we all know that LLBLGen has its definite advantages. Also, if my database changes, I know have to generate two projects, rather than one. Thank you Frans for making a set of LinqToSql templates, that at least make this whole process easier.

But the bottom line, using a LLBLGen DataSource is much more convenient if only paging information was passed. I could do paging, I could do insert/update/delete with next to no code. And as someone stated on the blog, you buy these controls to make life easier, isn't that the reason people fork $799 or $1,299 or $1,999 for their controls?

So as I said, I am not bashing DevExpress, I do really like what they have done. This is a bump in the road, which I feel if they truly cared about the quality of their controls, and I think they do, they will come to some even ground and make an implementation which is good for all. I am one of those customers who "care" as you mentioned, and I want to see DevExpress make the best controls on the market.

braidiano
User
Posts: 40
Joined: 18-Nov-2006
# Posted on: 16-May-2008 20:46:33   

I want to be clear too simple_smile

I'm an happy LLBLGen Pro customer, and an happy DevExpress customer. I have both DevExpress (all their controls, web and win) subcriptions and LLLBLGen Pro license.

Now I'm using both DevExprress controls and LLBLGen on many projects, and I can't switch to another UI control vendor (because I have DevExpress controls in all my project), due to the lot of work that its require, and because DevExpress controls aren't the "evil". They're rich of great feautures.

LLBGenPro also is the best ORM and I don't want change it.

The point at issue is: due to many reasons I have to get work ASPxGridView using LLBLGen Pro (I think some other people on this forum like me), with proper paging. This because I need my application to get works properly.

But I understand that both DevExpress and Solutions Design are in stalled (irrespective of who is right or who is wrong).

So.. if getting work my tools means implementing IListServer interface on LLBLGenPro datasource, I must implement it myself.. because now, I'm stalled with my work, with my customer like DevExpress and Solution Design....

I'm wrong? smile

I do not want to be controversial with what I said. it means only that it seems to me that all expect the other and no one moves to try to find a solution (ther are not obliged) So... I will made a solution myself.simple_smile

Seth avatar
Seth
User
Posts: 204
Joined: 25-Mar-2006
# Posted on: 16-May-2008 22:23:05   

Is there any way for a bunch of us to implement the IListServer interface so it works properly with LLBLGen? Maybe if we just pull together our intellectual resources and just write the thing we can make this go away. I know we shouldn't have to, but how hard could it be? Or is this a "principle-of-the-thing" kind of problem?

tzarger
User
Posts: 87
Joined: 14-Jun-2007
# Posted on: 16-May-2008 22:33:45   

Seth wrote:

Is there any way for a bunch of us to implement the IListServer interface so it works properly with LLBLGen? Maybe if we just pull together our intellectual resources and just write the thing we can make this go away. I know we shouldn't have to, but how hard could it be? Or is this a "principle-of-the-thing" kind of problem?

Yeah, as stated, any idea where they IListServer implementation documentation is? Keep in mind, you still would not have filtering, grouping, summaries/totalling... I think there is a forum thread where they have actually got filtering to work though.

EDIT: Keep in mind, I received a message in my support ticket that says they will send paging parameters to a datasource control, so perhaps on the next maintenance release, or 8.2 they will include it and the wrapper thing will become useless.

Seth avatar
Seth
User
Posts: 204
Joined: 25-Mar-2006
# Posted on: 16-May-2008 22:40:20   

tzarger wrote:

Yeah, as stated, any idea where they IListServer implementation documentation is? Keep in mind, you still would not have filtering, grouping, summaries/totalling... I think there is a forum thread where they have actually got filtering to work though.

Lets call them, they did leave a number on the other post stuck_out_tongue_winking_eye . I do remember seeing something about it like a year ago for a large project using their lookupedit (which was supposed to bring in ALL records to my chagrin). They told me I needed to implement the IListServer interface. I attempted to do so but was only met with the method names for the documentation. Perhaps we can get them to AT LEAST document the IListServer interface a little better.

Solving this problem would help out with their other controls when they use "ServerMode".

EDIT Here is all I have found so far: http://www.devexpress.com/Support/Center/KB/p/A1022.aspx

tzarger
User
Posts: 87
Joined: 14-Jun-2007
# Posted on: 16-May-2008 22:57:24   

I think diving into their LingServerModeDataSource to see how they implemented the IListServer interface would be the way to go. Or perhaps using their wrapper implementation and enhancing it a bit with the code from their LinqServerModeDataSource.

I will take a peek and see if I can get anything from their code. We may need to take this effort offline from this forum though.

Otis avatar
Otis
LLBLGen Pro Team
Posts: 39588
Joined: 17-Aug-2003
# Posted on: 16-May-2008 23:02:53   

Though that interface doesn't offer any paging as well.. It's also vague how a datasourcecontrol should implement these...

The main issue is: by definition a datasourcecontrol represents a single set. This set is fetched using ExecuteSelect. These methods appear to be methods which fetch data without keeping the state / data they fetch INSIDE the control. So what happens with a postback?

Very vague...

Frans Bouma | Lead developer LLBLGen Pro
habba
User
Posts: 3
Joined: 15-May-2008
# Posted on: 17-May-2008 00:09:20   

Otis wrote:

Though that interface doesn't offer any paging as well.. It's also vague how a datasourcecontrol should implement these...

I saw simple implementation of IListServer (without grouping :-( ) - http://demos.devexpress.com/Tutorials/Grid/Binding/ObjectData/ObjectDataSourceBinding.aspx - but paging is enabled. May be somebody will do grouping support too.

Otis wrote:

The main issue is: by definition a datasourcecontrol represents a single set. This set is fetched using ExecuteSelect. These methods appear to be methods which fetch data without keeping the state / data they fetch INSIDE the control. So what happens with a postback?

Grid has option to cache data (within single page).

1  /  2  /  3  /  4