• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 830
  • Last Modified:

ASP.net PostBackUrl


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?
  • 4
1 Solution
Nirmalan NagenthiranCommented:
klm555Author Commented:
Thanks, but I was looking on the lines of a function or command line to redirect back to the same page after the download.
klm555Author Commented:
Just for clarification, I am using "post" methods to filter the datagrid and excel file. i'm not considering using querystring at all.
Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

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
klm555Author Commented:
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
<asp:Button ID="btnExcel" runat="server"  PostBackUrl="excel.aspx" />
<asp:Button ID="btnFilter" runat="server" PostBackUrl="data.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()
myDataGrid.DataSource = myDataSet
myDataGridToExcel.Convert(myDataGrid, Response)
Public Shared Sub Convert(ByVal d As DataGrid, ByVal r As HttpResponse)
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
End Sub

Open in new window

klm555Author Commented:
Problem solved.
<asp:Button ID="btnExcel" runat="server" OnClientClick="setTimeout(function(){myform.action='data.aspx';}, 500);" PostBackUrl="excel.aspx" />

Open in new window

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Train for your Pen Testing Engineer Certification

Enroll today in this bundle of courses to gain experience in the logistics of pen testing, Linux fundamentals, vulnerability assessments, detecting live systems, and more! This series, valued at $3,000, is free for Premium members, Team Accounts, and Qualified Experts.

  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now