Solved

ASP.net PostBackUrl

Posted on 2009-04-13
6
800 Views
Last Modified: 2013-11-07
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
Comment
Question by:klm555
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
6 Comments
 
LVL 12

Expert Comment

by:Nirmalan Nagenthiran
ID: 24134649
0
 
LVL 1

Author Comment

by:klm555
ID: 24134914
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
 
LVL 1

Author Comment

by:klm555
ID: 24135136
Just for clarification, I am using "post" methods to filter the datagrid and excel file. i'm not considering using querystring at all.
0
Salesforce Made Easy to Use

On-screen guidance at the moment of need enables you & your employees to focus on the core, you can now boost your adoption rates swiftly and simply with one easy tool.

 
LVL 14

Expert Comment

by:GiftsonDJohn
ID: 24136153
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
 
LVL 1

Author Comment

by:klm555
ID: 24143042
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
 
LVL 1

Accepted Solution

by:
klm555 earned 0 total points
ID: 24144263
Problem solved.
<asp:Button ID="btnExcel" runat="server" OnClientClick="setTimeout(function(){myform.action='data.aspx';}, 500);" PostBackUrl="excel.aspx" />

Open in new window

0

Featured Post

Resolve Critical IT Incidents Fast

If your data, services or processes become compromised, your organization can suffer damage in just minutes and how fast you communicate during a major IT incident is everything. Learn how to immediately identify incidents & best practices to resolve them quickly and effectively.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Just a quick little trick I learned recently.  Now that I'm using jQuery with abandon in my asp.net applications, I have grown tired of the following syntax:      (CODE) I suppose it just offends my sense of decency to put inline VBScript on a…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
How to Install VMware Tools in Red Hat Enterprise Linux 6.4 (RHEL 6.4) Step-by-Step Tutorial

730 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question