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
Expand|Select|Wrap|Line Numbers
- <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);
- }
- }
Expand|Select|Wrap|Line Numbers
- <script type = "text/javascript" >
- function selecttherow(index)
- {
- window.opener.selectRow(index);
- }
- </script>
Expand|Select|Wrap|Line Numbers
- 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;
- }
- }
- }
Thanks ahead of time.