Solved

ASP.net PostBackUrl

Posted on 2009-04-13
6
795 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
  • 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
Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

 
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

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

For those of you who don't follow the news, or just happen to live under rocks, Microsoft Research released a beta SDK (http://www.microsoft.com/en-us/download/details.aspx?id=27876) for the Xbox 360 Kinect. If you don't know what a Kinect is (http:…
This script will sweep a range of IP addresses (class c only, 255.255.255.0) and report to a log the version of office installed. What it does: 1.)      Creates log file in the directory the script is run from (if it doesn't already exist) 2.)      Sweep…
This video gives you a great overview about bandwidth monitoring with SNMP and WMI with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're looking for how to monitor bandwidth using netflow or packet s…
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…

706 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

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now