Forms Data Controls :: Using Paging And Sorting Mechanism Of The GridView?
Feb 23, 2010
I am binding DataView data to GridView and using paging and sorting mechanism of the GridView.
In case of sorting, I define the sort expression based on user's selection and assign the same to DataView and then bind the same to GridView.
Everytime I sort the DataView, I see different set of rows on the same page on GridView. The issue is, the column which is used in sorting has many rows with same values. So everytime I sort DataView using sort expression and bind it to GridView, it displays different sets of rows and sorts randomly.
What should I do to make sure that it always display same rows? I cant change the sorting expression as it is selected by the user. Or only way is to append sort expression containing unique key internally ?
I need the consistent set of rows as I am operating on rows selected by users and make them editable and allow user to udate values and display the same.
Moderators Note: THIS ISSUE IS BIG FOR ME AND EVEN IF POSSIBLE, GET THE REPLY FROM THE DESIGNER OF GRIDVIEW. I have been looking for him for long. I am really fed up with reviewing a good lot of web pages on how we can possibly customize the gridview to enable sorting and paging. So many sites have listed out a lot of information and so many guidances. But the problem is that one works out fine and the other is a burden. I really feel bad about being given the job of customizing this kind of a gridview which has no user friendly approach to it. Also, this control is rendered without the pager links inside the <tfoot> tag. I have tried the Pear Pager in php. It is that good and easy to use and compared to that, the gridview in asp.net is the worst ever control i have ever tried so far.
1. i can use the images to indicate the sorting direction 2. I can have the custom pager like
<<Previous 1 2 3 .. 7 Next >>.
When i click the next when i am viewing the page at 3 , the pager links should change as
<<Previous 2 3 4 .. 7 Next >>
Kindly look into this type of requirement and firstly tell me whether this is possible with the gridview control. I would like this request even to be escalated to the designers of the gridview control also, so that Microsoft comes out with a reply THAT WORKS and not the kind of stuff like surfing through a lot of links and pages and finally wasting a lot of days precious time and still breaking the head with this useless control. I have spent a lot of time in searching for a perfect way. Not writing a code that is non-standard. I am really serious b'cos I have spent weeks in customizing this control. If I dont get a solid reply atleast now, I am going to generate all the output by HTML content by custom coding.
I have a problem with the allow paging and sorting in the gridview. I have a button to export the gridview data to excel and I need to disable the paging and sorting in code behind. When I export to excel it have the link numbers of the paging and the column header as a link to sorting. I'm using VB.
I've reviewed a couple other sources and none seem to be complete, there is always a 'oh, ya, but you have to do this if you have this, or comments left about it not working etc... So this is my attempt to get a complete answer in one place. No datasourceControl, datasource being assigned programatically upon a button click event. My button click event that originally binds data to the gridview looks like this:
and of course the first code I try to implement the paging, doesn't work. Which is this:
the result is not an error, just an empty gridview. What am I missing? That's just an example of most of the examples out there saying how simple it is and you only need a few lines of code being wrong, or maybe not wrong, but incomplete. So I'm not going to even bother with the bidirectional sorting examples I came accross as there are usually comments about it not working, or not actually being bidirectional. I'm sure it is simple, once you actually have the information you need, getting that information is the harder part. So, anyone here care to take a shot at a complete example of implementing paging and bidirectional sorting on a gridview when not using a datasourceControl?
I'm trying to extend the GridView control to enable sorting and paging for any situation.
When using my control I am fetching data from a database and filling a DataSet with it, then binding the GridView upon every page load. My first question would be, is this the correct approach?
To sort the GridView I am overriding the OnSorting method which stores the sort expression and direction in the ViewState, then creates a DataView and utalises the Sort method to sort the underlying data. It then sets the Data Source to this DataView and rebinds the GridView.
Paging is handled by OnPageIndexChanging which simply sets the PageIndex property and again rebinds the GridView.
My problem is; when any control causes a postback my GridView is no longer sorted, presumably because it is persistently rebound. If I don't rebind it then the GridView is empty on postback since the data isn't automatically stored in the ViewState. I have considered saving the data source in the ViewState but I would assume that this is bad practice for large amounts of data? - also DataViews are not seralisable.
The only solution I can think of currently is to override OnDataBound and sort the data every time. This results in a double sort when paging triggers a postback which seems inefficient. Code illustration of this below,
I'm looking for the cleanest 'best practice' solution as this is a learning exercise more than anything else.
I have been researching this issue for a couple of days and have found a lot written about it, but none of what I have found has fixed the problem I am having.
I work for a school system, and my principals are wanting to take a list of the staff members at their school and create staff lists for different activities they perform. I thought I would load the staff into Gridveiw1, and when they select a record have it move over into Gridview2 and "delete" from Gridview1.
I am loading my full staff into a datatable (SQL Server backend), and setting this datatable as my gridview1 datasource. At this point, it loads great, and cosmetically speaking sorts and pages fine. The problem occurs in the codebehind after a Sort or Page change has occurred -- when I select a record and move it over into Gridview2, it is moving the original record that was at that postion on Page 1 instead of the sorted or "new page" record.
So if the initial list comes in as:
Teacher 1 Teacher 2 Teacher 3
The sort button is hit so that the list now starts out like:
Teacher 7 Teacher 13 Teacher 5
If they select "Teacher 13" to be moved over after the sort, instead it is still moving over "Teacher 2" -- the initial teacher in that index before the sort.
The Gridview setup on my aspx page looks like this:
I want to use a gridview with sorting and paging to display data from an SQL server, the query uses 3 joins and the full text search containstable. The from part of the query uses all 3 tables in the join.What is the best way to do this? I can think of a stored procedure, SQL directly in the SQLDataSource and creating a view in the database.I want good performance and would like to leverage the automatic sorting and paging features of the gridview as much as possible.
Edit:About size, I suspect very few records, total about 1000 and a query would typical result in no more than 100 records and most times much less.
How do I attach this to a datagrid header and to the pager?Do the columns need to be Template columns and the header text being hyperlink? If so, how do I set it up so it will, if the user clicks "OK" in the confirmation pop-up, still sort?
Am trying to use sorting and paging using a Asp.net DataList Control.....I found a Tutorial at asp.net website, but not able to understand that. I found other two links ,which exactly is of my need...but the only thing is that , it is in VB...[URL]
But Am working with C# I wanna Use Sorting & Paging For this
I have a gridview that's inside a .ascx control that's dynamically embedded into another .ascx control, which is then called by a web form. The gridview will initially bind, but when any paging/sorting/command events are then triggered, I can't get any breakpoints inside the events to kick off. Additionally, when I look at the code-behind in the now-blank page, I see the old data sitting there.
what on earth is going on here? For edification, the .ascx page with the control is excerpted.
Now, I want to have paging and I'm doing that like this:
In thew above query, when I leave out seltion of the RowNum column (so instead having: "SELECT distinct eventid,id,userid FROM") only 3 records are shown when I have a maximum pagesize of 5 passed to the @maximumRows variable.
I started learning LINQ, So i thought of just creating gridview with sorting and paging using objectdatasource using LINQ. So i got this link
[URL] which Brian Orrel tell us how to do using IQueryable Interface. but i have nearly 300 lines of stored procedure which joins nearly 20 tables. so i thought of creating a stored procedure and using that instead of IQuerytable.
It has been more than 2 days since I had started searching for the answer and I still don't know how to do it.
I have empty gridview that is filled with data depending of the parameters given. The gridview is used to track changes user had made to the database.
In the first dropdown list the user selects from which table (or all tables) to display the data. From the second dropdown list the user selects from which column (or all columns) of the previously selected table to display data. In the first textbox the user enters the search term and in the third and fourth textboxes the user enters the date range in which the changes occurred.
After clicking button the data within the given parameters should be displayed. The problem is that data is displayed fine, but I can't manage to get sorting and paging to work so if possible, give concrete answer because I'm pretty sure I googled one half of the web during these 2 days. :)
Here is the code for the .aspx file:
Here is the codebehind:
To sum everything up... My question is: "How to enable sorting and paging for this code?"