Forms Data Controls :: GridView Not Displaying Sorted Output?
Mar 1, 2010
I am building a SortedList object for use as the DataSource of a GridView control. The key-value pairs are being built manually with the "key" fields being inserted in already sorted order. The "key" column is invisible with the "value" column the single displayed data item. I set the DataSource property of the gridview to the sortedlist and call the Bind method. The gridview then displays the data in random fashion!
I see from google that this is a common problem. I have a SQL server database that contains 26 rows of data. Two columns, the first is PK and an identity column (keys numbered 1 to 26) and the second column is a text field (nchar(10)) containing a letter of the alphabet (A..Z). The letters were inserted randomly to simulate sql being unsorted by default. I have a query that returns all of the data ordered by the letter column ascending. If I execute the query in sql server I get 26 rows orderd A..Z.
I have a gridview that is set up for paging (page size = 15) and sorting. When sorting is disabled, all data is correctly displayed on the gridview, 15 rows on the first page, 11 rows on the second page.
If I enable sorting, I get 15 rows on the first page and 11 rows on the second page, however on closer examination I find two letters missing and two letters duplicated on both pages. If I navigate to page two, then back to page 1 I find that the data is then shown correctly and the missing letters are back.
Has anyone struck this issue? I am thinking that the sort is not being initialized correctly, but am not sure where to look.
I am having a DOB field in database of type Datetime.I am retrieving this into a gridview .I want to display only date into the gridview in 'DD-MM-YYYY' format and that to in sorting order. How can I do that. I know that by converting DOB to varchar and using SQL Date formats codes(103,105...) I can do that but I can't able to display in sorted order as it will check only the date part and sort the dates. It will not chk the month & year. And I also want the user to insert the date in 'DD-MM-YYYY' format and this to be stored in database. How can I do this? Pls respond me ASAP.
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.
So I have a gridview that is sortable. I also have enabled it to export to excel. The problem is that it exports the original datasource and not the sorted data on the screen. What I need is when the export control is fired, the exact gridview or newly sorted gridview is sent to an Excel spreadsheet. Here what my excel export looks like:
I've got a Gridview bound to an objectdatasource. Sorting is enabled in gridview, but objectdatasource isn't doing any sorting. I can pick up the unsorted datatable from the Selected event of the objectdatasource, but I really want the sorted version. Is there any event on the gridview where I can access the sorted dataview it must be using internally?
Why am I asking? We're using paging as well (i.e. truncated data in gridview) and I want to loop through the full sorted dataview to find the primary key value to set selectedindex.
I have a gridview which displays images as shown in the code below. When the page loads the images load fine. But when any of the columns are sorted, the images are not displayed. In the page source view the grid still hold reference to the images when they were first loaded.
How do i bind the images so that they sort when the other columns are sorted.
Is it possible to have 2 ListBox then when a Button is Click the Items is Sorted already to GridView accordingly. btw I have done a sort button but for LB1 only. and LB2 only.
I have a GridView that sorts and has paging features. I need to grab the data from the SORTED DATA from the GRIDVIEW and put it into a DataTable. Who Do I get that sorted data gridview and store it into a DataTable. I am an ASP.NET Programmer. Goal: Get and Store Sorted GridView Data into a DataTable.
I have a GridView and have sortable columns. When a column is sorted the GridView automatically selects the top row, however the SelectedValue is still representing the row before the column is sorted. The SelectedValue of the GridView only gets changed when a row is selected, but I want that to happen when the GridView is sorted.
For example if I have this in my code:
[Code]....
itemId is populated with the old SelectedValue not the new one after the GridView has been sorted.
I have one filed that is encrypted using Rajindal algorithm and stored in MSSQL db.When I retrieve that column in gridview it's displayed in encrypted. I have the code that decrypts it but the problem is:How can I all loop throw this column values in the gridview and decrypt them all and display it in the gridview decrypted.See my code below:
I've been trying to bound an arraylist to a grdview for display and managed to work out the following:
[Code]....
At the point where rows are added to dt, i'm trying to get arraylist (Tweet) to be read row by row to insert each of it's fields into dt. There is no error but when run in browser, each cell of the gridview shows 'DataExtraction.Tweet'.I'm not sure where to go from here.
<body> <form id="form1" runat="server"> <div> <asp:GridView ID="press_dl" runat="server" AutoGenerateColumns="False" PageSize="1" ShowHeader="False"> <Columns><asp:TemplateField><ItemTemplate> test head test shortnews </ItemTemplate> <HeaderTemplate> </HeaderTemplate> </asp:TemplateField></Columns> </asp:GridView> </div> </form> </body> Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Not Page.IsPostBack() Then bind_press() ' bind_events() End If End Sub Sub bind_press() ds = Nothing ds = New DataSet Dim query As String query = "select top 1 * from tbl_press order by press_id desc" myConnection.Open() da = New OleDbDataAdapter(query, myConnection) da.Fill(ds, "Press") myConnection.Close() press_dl.DataSource = ds.Tables("Press") press_dl.DataBind() End Sub its dislpayes like this test head test shortnews test head test shortnews
Im displaying a Gridview full of data but the column "Country" is displaying the CountryID and I want it to display the Country 'Name'", same with State/Prov and a Status column I have. I've looked around at BoundField Properties and such and can't seem to find where I can configure this. Is it straight within my DataSource? Here's my code:
GridView Code
[Code]....
Here is my DataSource Code
[Code]....
Is it within the SELECT statement of the DataSource where I can need to configure using "Country" not "CountryID"or "Status" not "StatusID"?
I'm having trouble displaying the value of my textbox on the gridview. For example i have a column named Quantity Received which at the moment has no values in it then i have a textbox that would enter value for that said column .
FrameWorks.fwReplenishmentRecWi qtyrec = new FrameWorks.fwReplenishmentRecWi(); qtyrec.QtyReceived = Convert.ToInt32(txtQuantity.Text);
I have a Business object (Customers) with about 30 fields/attributesNow, I want to display list of Customers in gridview so I fetch them through my object datasourceBut gridview only uses 8 fields/attributes of an object and rest are unused or wasted Do I design sub objects containing only gridview fields ? How do I go about this problem ?
As of today my gridview is no longer showing when I run it in my browser. I have made changes to the database recently but the code behind and aspx file remains the same. No errors are coming up. Just the gridview is now blank and it was working perfectly shortly before.
On one of my pages I display a Gridview. This contains a list of questions generated by a SQLDataSource, with a dropdownlist on each row containing the answers for that question. The answer values can be different depending on the question, so I populate them in the RowDataBound event for the gridview, using question information.
As the list of questions is longer than the page I have placed the gridview within a Div which allows me to use scrollbars to navigate the gridview. I also use some methods to preserve the location of the last question answered - so that on answering a question, the gridview does not reset to show the first part of the gridview.
This works fine for IE7, which is what I have been using for the development, and which part of my customer base uses. However, the other part of my customer base uses IE6, which causes a problem.
When an IE6 user attempts to answer some questions, they run into issues. Should they scroll down the gridview, when they select a value from a dropdownlist (Effectively, when they answer a question), there is a postback and all of the visible (i.e. onscreen) dropdownlists appear to be cleared. However, on mousing over any of the dropdownlists, their value is then shown. On using either the scrollbar, or on using the mousewheel to scroll the gridview, all the dropdownlists are 'refreshed' and their values are shown.
At no point does the application appear to lose the data, it is just not showing it until there is a mouseover or the gridview is refreshed. Another odd aspect of this is that this does not apply to the first 5 rows of the Gridview. Any of these can be altered without there being this display issue. Should the gridview be scrolled enough to show some of the first 5 rows and some subsequent rows, only the subsequent rows will have this display issue.
I have tried various things to correct this - originally I called my retrievescrollposition method on the SelectedIndexChanged event of the dropdownlist, but have since moved it to Page_Load as the Else branch of if (!IsPostBack). I tried rebinding the DropDownlist in the SelectedIndexChanged event, but this only helped with the Question I was answering - the display of any other onscreen questions was still affected.
I have a GridView which works perfect when it is not empty. Now when the source is empty I want to show an empty GridView and to be able to insert rows inside.
I have this code for the page_load event:
[Code]....
but I got the following error:
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
and I have tried most solution and still I cant get the right results...I need a simple workable solution. I would like to display the header of a gridivew when it is empty
I want to display a GridView using the the selected DataValueField from the DropdownList.
I've set the Selectparameters for the GridView DataSource.
Here is my question: on clicking "BtnSelect" - How do I assign this parameter (@Id) to selected value (DataValueField) from the DropDownList and re-display the grid view accordingly?