Forms Data Controls :: Getting The Custom Sorting And Paging With Images To Indicate The Sorting Direction In Gridview
Jul 18, 2010
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
[code]
<<Previous 1 2 3 .. 7 Next >>.
[/code]
When i click the next when i am viewing the page at 3 , the pager links should change as
[code]
<<Previous 2 3 4 .. 7 Next >>
[/code]
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.
Can someone point me to a tutorial that shows how sorting is done with small images showing the sort direction. I'm using linq-to -sql so I'd like something that shows how dynamic linq works.
here's a situation and I would appreciate your response.
I have programmatically created the Wizard control:
Page_Load(obj s, evargs e) { Wizard ClaimDetailWizard = new Wizard(); foreach(int item in selectedItems) { //create new step //added custom control to new step //add step to wizard } //added wizard to a placeholder on a page }
Based on List I get from Session i added new steps to my wizard To each step I had added a custom control
Each custom control in tern contains another custom Gridview Control in it.
So here's the problem when the page loads for example for two steps. All is good Wizard does what it's supposed to do.
But when I try to use sorting or paging in that custom Gridview. Somehow it displays the gridview I should see in the next step of the wizard.
Also what I'm noticing through debugging. Is that when I press next in the wizard I go back to the original page where I do all of the code specified above, and it recreates the wizzard. But it goes to the next step. Is this the way wizard supposed to work? Just doesn't seem very efficient.
My Gridview sorting only works only one way means it works only desc order not by asc order.
below is my code:
Public Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Not Page.IsPostBack Then Gridview1.Visible = False End If End Sub Protected Sub Submit_Click(sender As Object, e As System.EventArgs) Handles Submit.Click Gridview1.DataSourceID = Nothing
I'm coding a report page.In this page,there are two date fields for user to filter the date and the GridView is filled depending on these dates in the CodeBehind (When user click the button view).Now I want toimplement a paging/sorting feature for this GridView.I've researched and see there are default paging for GridView which is not very efficient (my report table may have thousands of records) and custom paging but this requires using ObjectDataSource (which I don't use).Thus anyone can recommend me some approaches that are best used in this situation?
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.
Issue:
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.
Problem: it will sort and paging correctly but when after change a page, it will not display the corrected sorted order.
Protected Sub PFTGridView_PageIndexChanging(ByVal sender As Object, ByVal e As GridViewPageEventArgs) Handles PFTGridView.PageIndexChanging Dim PFTObj As New PFT Dim PFTDST As New Data.DataSet
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:
[Code]....
and of course the first code I try to implement the paging, doesn't work. Which is this:
[Code]....
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 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'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,
[Code]....
I'm looking for the cleanest 'best practice' solution as this is a learning exercise more than anything else.
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.
All of my columns are bound in the Gridview. On OnRowDataBound event, I am adding some custom styles like underlines and colors to the text of the columns. Sorting of data is working fine but I am losing my custom styles when I sort. I am using the generic sorting code for the GridView.
How I can keep my custom styles on sorting that I added during OnRowDataBound event.
what I am trying to do;I want it so that when the user clicks on the datagrid column headers to sort the records, or when they go to page the datagrid, that a confirmation pop-up appears first, confirming that their changes are going to be lost (unless they click "Cancel").I have the confirmation pop-up scripted in Javascript and is added to the controls on the page using
[Code]....
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.
i am building my objectdatasource dynmically when certain buttons are clicked on the page.. and with that the gridview is being displayed with the results of the objectdatasource that was built.
So my gridview code looks like this:
[Code]....
How can i enable sorting and paging if the datasource is being built on button click event?