I have a gridview in an updatepanel with sorting enabled and an event handler as follows:
protected void MyGridSort(object sender, GridViewSortEventArgs e)
{
var TheDirection = (e.SortDirection).ToString();
var TheColumn = (e.SortExpression).ToString();
I put a breakpoint just after these lines. Every time I press the column header, my variable TheDirection is always showing Ascending. Why is it not toggling from ascending to descending and back?
I was given help in a previous topic located here: Accessing Gridview In Another Form In this topic I had gridview rows that are selectable and a search window that returned search results. We found a way for me to select a row in the parent window of the search one. My issue now is that when the parent windows gridview is sorted, the function no longer selects the correct row. I was wondering if there was any way to access the gridviews sort expression and direction, or some other way I can do this so it accounts for sorting. Relavent code is as follow: This is in my parent window
<script type = "text/javascript"> function selectRow(index) { //Retrieve a reference to the table that represents the GridView var gridView = document.getElementById('<%=gvSideList.ClientID%>'); if(gridView) { //If able to get a reference to the table representing the GridView... var doPostbackArgument='Select$'+index; __doPostBack('<%=gvSideList.ClientID%>',doPostbackArgument); } }
This is in the child window
<script type = "text/javascript" > function selecttherow(index) { window.opener.selectRow(index); } </script> protected void gvresults_SelectedIndexChanged(object sender, EventArgs e) { //declare variables GridViewRow row; int index; int id; //retrieve index, row, and id from gvresults index = gvresults.SelectedIndex; row = gvresults.Rows[index]; id = Convert.ToInt32(row.Cells[5].Text); //fill a datatable from general with id's for selection SqlCommand cmd = new SqlCommand("SELECT ID FROM General", csbg); cmd.Parameters.AddWithValue("@id", id); SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); da.Fill(dt); //loop through the dt and find the index of the matching id from the search window for (int i = 0; i < dt.Rows.Count; i++) { if (dt.Rows[i]["ID"].Equals(id)) { //execute script to select the matching row in the dataentry page string script = ""; script += "selecttherow("; script += i; script += ");"; ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "selecting", script, true); break; } } }
Let me know if you need me to further clarify anything.
Just spent about 8 hours googling and looking through this forum for a solution on how to make sure that I can dynamically sort. Here is the situation.
I have 1 Gridview that displays 10 different scenarios based on what button is clicked.
I am also returning only top 10 records. I am doing all of the data binding pragmatically. So I have BoundFields, HyperLinkFields etc.
I also want to sort some records. When I change DataSource SQL statement the gridview somehow remembers what the last sort value was and it errors out saying that value "x" cannot be sorted because it does not exists.
Here I get an error that says that the data source does not support sorting? Doesnt it say gridview1.allowsorting = false;
I also tried gridview1.sort("", SortDirection.Ascending); This does nothin... except query my database one more time because i have a onSorting event that looks like this:
[Code]....
Here is an example of just one of those SLQ statements inside GetSQLQuery:
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
How do I pass a GridView column value to the code behind with out making it visible? In the following code, I would like to capture the ContactID with out making it visible in the GridView.
I would like to capture ContactID as follows. I can not do so with out making it visible = true in the GridView.
if (e.CommandName.Equals("Remove")) { int index = Convert.ToInt32(e.CommandArgument); int ContactID = Convert.ToInt32(GridView1.Rows[index].Cells[0].Text.Trim()); }
I have two GridViews that list out included and exclude data items respectively. By clicking "Change Status" (a custom button for each row) Users can change the row status from included to excluded or vice versa. However before changing the status - users would need to specify the reason and enter a date for when they want something included/excluded. So these are additional operations that need to take place after the "Change Status" button is clicked and before an update occurs. I want to use jQuery to capture the row id being "changed", save this value and pass back the update to the database. I will use an absolute div for the menu but I'm running into issues as to how to capture row id and how to pass this back to my C# in codebehind.
I have two pages, the first one displays a list of products in a gridview, one column in the gridview is a hyperlink, this can be clicked on to get further details about the product. Each row in the gridview can be selected, certain details are added to an array (including the hyperlink column). I them want to display these details on page number two. All details are displayed except the hyperlink field.Has anybody any ideas as to what I'm doing wrong? The code is as follows:
The data is populated in the gridview dynamically at runtime The number of rows vary each time The auto postback event has been set to true I need to capture the rows that are selected, When I try to capture the button click event; the gridview is null(I understand that it has to be rebound on each postback). Hence this is not working
[Code]....
I also tried this, the rowcommand event; It is also not getting generated. The gridview rowcommand is not getting fired
[Code]....
I need the rows which are selected using the checkbox in the above mentioned sceanrio.
My Problam is on Capturing Text Box and Dropdown seleted itam from grid view i create a gridview with Empty DB binding using [URL] this senirio. I only used setinitional value() function and called its in page load as discribed in above lonk. insted of adding New record Button i callled a java scrit code discribed below. and i also create a button (SAVE) to capture a value intered in text box . On this button click event i try to capture a textbox and dropdown value like
for (int i = 0; i < Gridview1.Rows.Count; i++) { DropDownList sen_to1 = (DropDownList)Gridview1.Rows[i].Cells[1].FindControl("DD_sento_org"); TextBox Add_to1 = (TextBox)Gridview1.Rows[i].Cells[2].FindControl("Txt_addto"); int Add_to = Convert.ToInt32(sen_to1.SelectedValue); String Addd_to = Add_to1.Text; }
but its not working i can not go inside loop.
<script type='text/javascript' language='javascript'> function AddNewRecord(keyCode, obj) { if (window.event.keyCode==13 )var grd = document.getElementById('Gridview1'); var tbod=grd.rows[0].parentNode; var newRow=grd.rows[grd.rows.length - 1].cloneNode(true); cleanUpInputs(newRow); tbod.appendChild(newRow); } } return false ;
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 have a gridview with data. I want a button which is not part of the gridview. Then if I press a button the gridview is sorted by two colums. i.e column1 ascending column2 descending.
I am not looking to work with a Sqldatasource as I use a data access layer. So the sort would have to be from a datatable and databind or directly with the gridview.
I'm looking for a way to sort the rows of a datatable without setting the DefaultView.Sort to a specific column. I have a datatable in session that users can add records to. I want them to be able to sort the data by clicking on a button. But new records added after that need to show up at the bottom of the list until the sort button is clicked again.
What's the best way to do this? I have seen quite a few examples that use a Dataview etc. what is the best method. I'm thinking about speed issues when a grid has a few thousand records etc.
I have a repository that contains all of my LINQ queries for this project that I am working on. I am able to get the LINQ results to a DataTable and bind that to a gridview for displaying the data. Now I need to make the gridview sortable. I have set AllowSorting="true" and I have the OnSort event handled in a routine in the codebehind.
the specific example i am referring to is this site [URL] notice the sort by drop down list. basically i want to sort products according to price,name,popularity? do i have to requery the database and retreive the sorted data in gridview again, or should i already sort the items in the gridview that are already there? I tried to this but its the wrong approach, basically i was trying to repopulate data in the page load event, which was giving error.
I want to sort a GridView by clicking on the header. I guess all i need is the header name and then pass it into sql to get the data back sorted. How is it possible to get the header name?
Loading data into gridview, retieving data using linq,I have a method that accepts two paramters that would sort specific field and return the object to the gridviewi.e.
passing into the method GenerateData(string sortExp, string sortDir) sortExp = "Name", sortDir = "descending" linq query://works
I have a gridview with several columns, 3 of which I'd like to sort. The source for the data is held in the session.
protected void MyGridHistorySort(object sender, GridViewSortEventArgs e) { var TheColumn = (e.SortExpression).ToString(); TheDataHistory = (List<ViewDataHistoryModel>)Session["SessionDataHistory"]; var test = "data.DataDate"; var NewDataSource = from data in TheDataHistory orderby test select data; MyGridHistory.DataSource = NewDataSource; MyGridHistory.DataBind();
DataDate is a valid column in the list but the orderby statement doesn't work. Ideally, I'd like it to sort with the variable TheColumn by writing something like test = "data."+TheColum; and then add a sort direction based on a boolean. I looked at the OrderBy extension method NewDataSource.OrderBy(test); but that doesn't work either.
I'm trying to sort records in the gridview right after a radio button is selected. My approach is with the dataview, but because the dataset variable doesn't survive a round trip to the server, I don't know how to make this happen.
Public Sub GetCustomers() db.RunProcedure("usp_customers_get_all") db.doSort(radList.SelectedValue) gvCustomers.DataSource = db.MyView End Sub Protected Sub radList_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles radList.SelectedIndexChanged If radList.SelectedValue = 0 Then db.doSort(0) gvCustomers.DataSource = db.MyView End If If radList.SelectedValue = 1 Then db.doSort(1) gvCustomers.DataSource = db.MyView End If End Sub Public Sub doSort(ByVal strIn As Integer) If strIn = 0 Then MyView.Sort = "lastname, firstname" Else MyView.Sort = "username" End If End Sub Public Sub RunProcedure(ByVal strName As String) Dim objConnection As New SqlConnection(mstrConnection) Dim mdbDataAdapter As New SqlDataAdapter(strName, objConnection) Try mdbDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure Me.mDataset.Clear() mdbDataAdapter.Fill(mDataset, "tblCustomers") MyView.Table = mDataset.Tables("tblCustomers") Catch ex As Exception Throw New Exception("stored procedure is " & strName.ToString & " error is " & ex.Message) End Try End Sub
My Gridview sort is working only first time. My Gridview sort only first time when I click on any column
I want ASC > DESC
Again DESC > ASC
and Again ASC > DESC this way my sort should work
I have changed my code
I added Gridview binding to PAge_Load function
Code is below
Public Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim myUserInfo As GCS_User_Info = Session("UI") If Not Page.IsPostBack Then GRDView.DataSource = GetSortableData(String.Empty) 'System.Drawing.FontFamily.Families GRDView.DataBind()