klm555
asked on
ASP.net PostBackUrl
Hi,
I have a webpage (data.aspx) with a datagrid which paging and a button which can download that data to excel (excel.aspx). When a user clicks on the button, an excel file downloads as it has a PostBackUrl attribute set to excel.aspx. This function works, OK.
However, after I download the excel file, and click on a page on a page number on the datagrid, it download the excel file again. I suspect it is still posting back to excel.aspx when it should be returning to the same page (data.aspx).
Is there a way to change the PostBackUrl, download a file for example, and return the form so the original postbackurl file is retained?
I have a webpage (data.aspx) with a datagrid which paging and a button which can download that data to excel (excel.aspx). When a user clicks on the button, an excel file downloads as it has a PostBackUrl attribute set to excel.aspx. This function works, OK.
However, after I download the excel file, and click on a page on a page number on the datagrid, it download the excel file again. I suspect it is still posting back to excel.aspx when it should be returning to the same page (data.aspx).
Is there a way to change the PostBackUrl, download a file for example, and return the form so the original postbackurl file is retained?
ASKER
Thanks, but I was looking on the lines of a function or command line to redirect back to the same page after the download.
ASKER
Just for clarification, I am using "post" methods to filter the datagrid and excel file. i'm not considering using querystring at all.
Please post the code for the button click event where you redirect to the Excel.aspx. Also the sample code of the Excel.aspx.vb
ASKER
Attached is the code for the button. I trigger the postback by firing a btnExcel.click javascript command.
However, if I click the btnFilter after the file is downloaded the datagrid returns to normal functionality. It appears the postback page is set to "excel.aspx" until it is changed back again to "data,aspx" by pressing the second button/
The excel page, calls a component that converts a datagrid to an excel file. It has one subroutine namely, Convert. This file is attached for convience also.
I have done some research and found a tutorial which is able to change the postback page dynamically by creating a custom button, albeit it is in C#, but I was able to converted it to VB, compiles with no errors, but I do not know how to call the new custom button to be included in the code. If this tutorial is suitable with a few minor refinements, please let me know. http://weblogs.asp.net/stefansedich/archive/2008/01/16/crosspagepostback-in-new-window.aspx
Thanks points increased to 500
However, if I click the btnFilter after the file is downloaded the datagrid returns to normal functionality. It appears the postback page is set to "excel.aspx" until it is changed back again to "data,aspx" by pressing the second button/
The excel page, calls a component that converts a datagrid to an excel file. It has one subroutine namely, Convert. This file is attached for convience also.
I have done some research and found a tutorial which is able to change the postback page dynamically by creating a custom button, albeit it is in C#, but I was able to converted it to VB, compiles with no errors, but I do not know how to call the new custom button to be included in the code. If this tutorial is suitable with a few minor refinements, please let me know. http://weblogs.asp.net/stefansedich/archive/2008/01/16/crosspagepostback-in-new-window.aspx
Thanks points increased to 500
data.aspx
-----------------------------------------------------------------------
<asp:Button ID="btnExcel" runat="server" PostBackUrl="excel.aspx" />
<asp:Button ID="btnFilter" runat="server" PostBackUrl="data.aspx" />
-----------------------------------------------------------------------
excel.aspx
-----------------------------------------------------------------------
mySQL = "SELECT * FROM Customer"
Dim myConnection As New Data.SqlClient.SqlConnection("db")
Dim myCommand As New Data.SqlClient.SqlCommand(mySQL, myConnection)
Dim myAdapter As New Data.SqlClient.SqlDataAdapter(myCommand)
Dim myDataSet As New Data.DataSet()
myAdapter.Fill(myDataSet)
myDataGrid.DataSource = myDataSet
myDataGrid.DataBind()
myDataGridToExcel.Convert(myDataGrid, Response)
----------------------------------------------------------------------
ExcelComponent.vb
----------------------------------------------------------------------
Public Shared Sub Convert(ByVal d As DataGrid, ByVal r As HttpResponse)
Response.Clear()
Response.ClearHeaders()
Response.Charset = ""
Response.Buffer = True
Response.ContentType = "application/ms-excel"
Response.AddHeader("Content-Disposition", "attachment;filename=Customer_List.xls")
Response.AddHeader("Content-Transfer-Encoding", "binary")
Dim myStringWriter As New System.IO.StringWriter()
Dim myHtmlwrite As New System.Web.UI.HtmlTextWriter(myStringWriter)
Dim myDataGrid As New DataGrid()
myDataGrid = d
myDataGrid.DataBind()
myDataGrid.RenderControl(myHtmlwrite)
r.Write(myStringWriter.ToString)
r.End()
End Sub
-----------------------------------------------------------------------
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
https://www.experts-exchange.com/questions/23268781/How-can-I-change-PostBackURL-based-on-user-selections.html