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

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?
0
klm555
Asked:
klm555
  • 4
1 Solution
 
Nirmalan NagenthiranCommented:
0
 
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.
0
 
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.
0
Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

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.

 
GiftsonDJohnCommented:
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
0
 
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
 
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
-----------------------------------------------------------------------

Open in new window

0
 
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

0
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

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

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