C# - Linkbutton Postback-url Changes After Second Time Of Sorting / Paging?
Jun 17, 2010
I have a asp.net page which has been url rewritten and when im sorting my gridview or paging it via my custom pager it works.
This works fine for first postback to the using the update panel, but 2nd postback the url has changed to the wrong url. When u view source the form action= is still point to correct url, but updatepanel / datagrid is ignoring this and using some other url.
why and how can i ensure this url is always the rewritten version used for updatepanel postbacks?
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.
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.
I currently am using an ASP.Net gridview control and when a sortexpression is defined on the column, the column header is rendered as a linkbutton. I want to know if it is possible to convert that LinkButton to a Button control and preserve all the functionality.I cannot use TemplateColumns because I using DataControlField implementation to create columns and add them to the grid.
I'm trying to implement a paging and sorting list in ASP.NET MVC without using MVContrib grid or javascript (needs to be seo friendly). I have constructed my action with the following signature: ActionResult List(int? page, string sort, string direction); The problem I have though is getting both the paging and the sorting to work. Say for example I have the following code: <%= Html.ActionLink("Title", "List", new { sort = "Title", direction = "ASC" }) %> I hoped this would generate a url containing all of the existing route values (including the current page) but it doesn't. Therefore when you click on the link the page is set back to null.
I have looked at all the overloads for the ActionLink helper but nothing looks like it will help. What I effectively need to do is generate a url/link with the existing page value (or potentially any other route values) and the new sort parameters.
SQL database, Linq to SQL class a ASP.NET page with a LinqDataSource and a gridview.
The table has a ID field, a date field and a Serialnr field.
In my Grid I like to Page on the datefield but to sort on the serialnr field (or a selectable other field.)
Is that possible? Standard the paging is always done on the sort field and when you select a different sort field the page jumps back to the first page, and paging is then done over the sorted column.
I've been implementing MS Search Server 2010 and so far its really good. Im doing the search queries via their web service, but due to the inconsistent results, im thinking about caching the result instead.
The site is a small intranet (500 employees), so it shouldnt be any problems, but im curious what approach you would take if it was a bigger site.
I've googled abit, but havent really come over anything specific. So, a few questions:
What other approaches are there? And why are they better?
How much does it cost to store a dataview of 400-500 rows? What sizes are feasible?
Is there any good solution for ajax enabled Grid with pageing and sorting which only brings the required data from database? I mean it should only bring the data from the database which is to be displayed on the particular page number of the grid.
I looked at this. It looks good. But I just thought if anyone has created something better using Google's or Yahoo's javascript library or using any good features of asp.net 3.5.
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:
[Code]....
Here is the codebehind:
[Code]....
To sum everything up... My question is: "How to enable sorting and paging for this code?"
i am using LinqDataSource and a gridview control and my paging/sorting works fine but when i add <asp:UpdatePanel than its not working, below is my .aspx page and i am not sure what i am missing...
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.
I am using an IComparer to do the sorting of the gridview and binding it to a list of objects. It used to be that the linkbutton in the first template field was being done like this:
[Code]....
The sorting worked just fine when it was like this, but I would prefer not to use a querystring value. The problem with using the linkbutton is that the sorting appears to work (there are only two rows in my test case and they change places), but when the linkbutton is clicked on it is in the same order before the sort took place. After each sort the gridview's datasource is reset to the newly sorted list of objects and the databind method is called.
I'm doing a webpage with a search that brings a lot of information from MSSQL. What I did is a stored procedure that return only the page to be seen on the website. Right now I'm working on the paging as I need to show something similar than google. If you are at page 1 they show first 10 pages and if you are at page 19 they show since page 9 to 28. I think the best option to show the page numbers is using a linkbutton inside a repeater. The problem that I have now is that I do not know the best way to take the page number at postback.
Doing a quick sample I assigned an ArrayList to repeater.datasource: <asp:Repeater ID="Repeater2" runat="server"> <ItemTemplate> <asp:LinkButton ID="LinkButton1" runat="server" CommandArgument="<%# Container.DataItem %>"><%# Container.DataItem %></asp:LinkButton> </ItemTemplate> </asp:Repeater> <asp:LinkButton ID="LinkButton2" runat="server" CommandArgument="4654">Test #1</asp:LinkButton>
At my Default.aspx.cs file I have the next code
protected void Page_Load(object sender, EventArgs e) { if (this.IsPostBack) { string x = LinkButton2.CommandArgument; //string y = LinkButton1.CommandArgument; //I know this line will not work since the Linkbutton1 is inside the Repeater. }
What Shall I do to make it works? Does anyone has a better solution for this paging?
i m using three web services in my project ... while Webservice1 returns data in a set of 50 records at a time .. the other 2 webservices return the entire resultset .. the consolidated results(20 per page) are to be displayed in sorted fashion...now the query is to find the best way to retrieve the data from the 3 sources while applying the sorting across the consolidated results. I have developed some code for this but am looking for something better ..
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.
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?
I am having a gridview with an object datasource binded in the markup(aspx page).When page loads it directly works fine with all sorting and paging properties.However, i need to filter display on gridview so i have to change the datasource of the gridview on the code behindIt works fine.. i mean the filtering and displaying is good but paging and sorting doesnt work.
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.
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