This code behind emulates a user choosing 3(could be up to 10) reports and hitting submit button on the web interface. I don't know how to complete the code to execute parameterized batch file using an UpdatePanel and/or background-workers.
ASPX. I need something like this for ASPX page.
This was inspired by : Walkthrough: Using the ASP.NET Timer Control with Multiple UpdatePanel Controls. Achieves objective of multiple controls being update based on same trigger.
simulate_process.bat
Should i dynamically add update panels or drag and drop 5 updatepanels onto page and limit user to choosing 5 reports? I welcome working ode examples.
VB.NET:
Imports System.IO
Partial Class UpdatePanel
Inherits System.Web.UI.Page
Dim arrRptQueue As New ArrayList
Protected Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim fi As FileInfo
For Each oRpt As ReportObject In arrRptQueue
If Not oRpt.finished Then
fi = New FileInfo(oRpt.reportFile)
If fi.Exists Then
'Replace PLEASE WAIT message with hypelink to report
'or preferably replace ajax-loading.gif with hyperlink to report
Label1.Text = String.Format("<a href=""{0}"">{1}</a>", oRpt.reportFile, oRpt.reportname)
End If
End If
Next oRpt
End Sub
Public Sub ExecuteBatchfile(ByVal filename As String, ByVal param As String)
Dim objProcess As System.Diagnostics.Process
Try
objProcess = New System.Diagnostics.Process()
objProcess.StartInfo.FileName = filename
objProcess.StartInfo.Arguments = param
objProcess.Start()
objProcess.Close()
Catch ex As Exception
Throw ex
End Try
End Sub
Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit.Click
Dim oRpt1 As New ReportObject(100, "Daily Report", "c:\temp\daily_12312010.txt")
Dim oRpt2 As New ReportObject(101, "Weekly Report", "c:\temp\weekly_12312010.txt")
Dim oRpt3 As New ReportObject(102, "Annual Report", "c:\temp\yearly_12312010.txt")
With arrRptQueue
.Add(oRpt1)
.Add(oRpt2)
.Add(oRpt3)
For Each oRpt As ReportObject In arrRptQueue
ExecuteBatchfile(oRpt.reportFile, oRpt.reportname)
Next oRpt
End With
End Sub
End Class
Public Class ReportObject
Public reportnbr As Int16 = 0
Public reportname As String = ""
Public reportFile As String = ""
Public finished As Boolean = False
' notation for parameter
Public Sub New(ByVal pReportnbr As Int16, ByVal pReportName As String, ByVal pReportFile As String)
reportnbr = preportnbr
reportname = pReportName
reportFile = pReportFile
End Sub
End Class
ASPX. I need something like this for ASPX page.
This was inspired by : Walkthrough: Using the ASP.NET Timer Control with Multiple UpdatePanel Controls. Achieves objective of multiple controls being update based on same trigger.
VB.NET:
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
<asp:Timer ID="Timer1" OnTick="Timer1_Tick" runat="server" Interval="10000">
</asp:Timer>
</div>
<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
</Triggers>
<ContentTemplate>
<asp:Label ID="Label1" runat="server" Text="UpdatePanel1 not refreshed yet."></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePanel2" UpdateMode="Conditional" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
</Triggers>
<ContentTemplate>
<asp:Label ID="Label2" runat="server" Text="UpdatePanel2 not refreshed yet."></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="UpdatePane3" UpdateMode="Conditional" runat="server">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
</Triggers>
<ContentTemplate>
<asp:Label ID="Label3" runat="server" Text="UpdatePanel3 not refreshed yet."></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
</form>
simulate_process.bat
VB.NET:
@echo off
echo.simulating process to create report: %~1 which can takes up to 5 minutes
@choice /T 10 /C y /CS /D y > nul
echo.FileContents > %~1
Should i dynamically add update panels or drag and drop 5 updatepanels onto page and limit user to choosing 5 reports? I welcome working ode examples.