|
Rank: Member Groups: Member
Joined: 1/24/2008 Posts: 13
|
Hi, I'm stuck. I'm working in Visual Web Developer 2005 and when I load the example project, the progress bar works beautifully. I have no idea how to get it into my web site though. I haven't been able to find a guide or a forum topic that shows how to use the progress bar from an aspx page. I've created a new Web Form named Progressbar.aspx using VB.NET. I drag and drop the Progressbar from the Control Toolbox EO.WEB panel onto the Web Form and set the property value color and style. So now I have this great looking progress bar but I have no idea how to talk to it from my VB.NET code...The sample code makes it look simple:
Code: Visual Basic.NET
Private Sub ProgressBar1_RunTask(sender As Object, e As EO.Web.ProgressTaskEventArgs) Handles ProgressBar1.RunTask
e.UpdateProgress(0, "Running...")
End Sub 'ProgressBar1_RunTask
I've copied the Progressbar control, stop/start buttons and javascript to my own project and cut the vb down to:
Code: Visual Basic.NET
Imports System
Imports System.Data
Imports System.Drawing
Imports System.Web
Imports System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls
Partial Class Progressbar
Inherits System.Web.UI.UserControl
Private Sub ProgressBar1_RunTask(ByVal sender As Object, ByVal e As EO.Web.ProgressTaskEventArgs) Handles ProgressBar1.RunTask
e.UpdateProgress(0, "Running...")
System.Threading.Thread.Sleep(500)
e.UpdateProgress(100, "The task is done!")
End Sub 'ProgressBar1_RunTask
End Class 'Demo
and the result: Quote:Compilation Error Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: ASPNET: Make sure that the class defined in this code file matches the 'inherits' attribute, and that it extends the correct base class (e.g. Page or UserControl).
Source Error: Line 6: Imports System.Web.UI.HtmlControls Line 7: Line 8: Partial Class Progressbar Line 9: Inherits System.Web.UI.UserControl Line 10:
Can anyone help me get this running? yes --> Thank you thank you thank you...thanks.
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,217
|
Hi Jon, You can find documentation on the progress bar control at here: http://www.essentialobjects.com/ViewDoc.aspx?t=ProgressBar%2foverview.htmlThe same information is also avaliable in a local .chm help file. As for the compiler error, unfortunately it's beyond the scope of our support. It's a generic compiler error and we only support questions related to our product here. Sorry! Thanks
|
|
Rank: Member Groups: Member
Joined: 1/24/2008 Posts: 13
|
Thanks for the response. I think I was complicating things by adding too much. here is the simplified version that I got to work:
Code: HTML/ASPX
<%@ Page Language="VB" MasterPageFile="~/RXCheckout.master" AutoEventWireup="false" CodeFile="ProgressBar.aspx.vb" Inherits="ProgressBar" title="Untitled Page" %>
<%@ Register Assembly="EO.Web" Namespace="EO.Web" TagPrefix="eo" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<script type="text/javascript">
function OnProgress(progressBar)
{
var extraData = progressBar.getExtraData();
if (extraData)
{
var div = document.getElementById("divStatus");
div.innerHTML = extraData;
}
}
</script>
<eo:ProgressBar runat="server" id="ProgressBar1" ShowPercentage="True" IndicatorImage="00060104"
BackgroundImageRight="00060103" ControlSkinID="None" BackgroundImage="00060101" IndicatorIncrement="7"
BackgroundImageLeft="00060102" Width="300px" StartTaskButton="btnStart" StopTaskButton="btnStop"
ClientSideOnValueChanged="OnProgress"></eo:ProgressBar>
<br>
<asp:LinkButton id="btnStart" runat="server">Start</asp:LinkButton>
<asp:LinkButton id="btnStop" runat="server">Stop</asp:LinkButton>
<div id="divStatus"></div>
</asp:Content>
Together with this VB.NET code:
Code: Visual Basic.NET
Partial Class ProgressBar
Inherits System.Web.UI.Page
Private Sub ProgressBar1_RunTask(ByVal sender As Object, ByVal e As EO.Web.ProgressTaskEventArgs) _
Handles ProgressBar1.RunTask
e.UpdateProgress(10, "Fish Heads")
End Sub 'ProgressBar1_RunTask
End Class
|
|
Rank: Member Groups: Member
Joined: 1/24/2008 Posts: 13
|
New question. The progress bar reacts as desired and can be adjusted from the VB.NET code but, when the sub has run its course it should be updating some text boxes on the page...but doesn't. What am I missing here?
Code: Visual Basic.NET
Private Sub ProgressBar1_RunTask(ByVal sender As Object, ByVal e As EO.Web.ProgressTaskEventArgs) Handles ProgressBar1.RunTask
e.UpdateProgress((x / NumMeasurements) * 100) 'works fine
MaxIrrLabel.Text = FormatNumber(MaxIrradiance, 0) 'does not update at end of sub
End Sub 'ProgressBar1_RunTask
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,217
|
|
|
Rank: Member Groups: Member
Joined: 1/24/2008 Posts: 13
|
Thanks for the super quick response. Could you give me an example of how I would update:
<asp:Label ID="MaxIrrLabel" runat="server"></asp:Label>
from the sub ProgressBar1_RunTask
Thanks in advance.
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,217
|
Hi Jon,
Please take a look of our sample project (you can load and run it with VS.NET) and also the documentation, what you are asking is already there. We don't mind to offer samples to show you how to use our product, but we certainly would not encourage our users to ignore all the resources that are already there. So make sure you go over those first.
Thanks
|
|
Rank: Member Groups: Member
Joined: 1/24/2008 Posts: 13
|
Hi,
I don't think I asked the right question. I've been working with the sample code and have successfully updated some html. I actually drop in an animated gif to acompany the progress bar. So this is where I send the extra information. After the sub is finished I want to modify the text value of a label that is outside of the div html.
There are several labels and text boxes that have new information (with several different variables) at the end of the sub that need to be updated.
When the sub is complete is there a way to refresh the page so that all the labels and text boxes get their new variables?
Thanks.
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,217
|
Hi Jon,
Thanks for the clarification. The purpose of the sample is to show you how to execute any arbitrary JavaScript code based on the information sent from the server. To simplify the code, the sample only updated DIV html. But you can replace that code with anything you would like.
To update a label, you would do similar things by calling document.getElementById and then set the returned element's innerHTML --- there is no fundamental difference between that and the DIV shown in the sample at all. If you want to work with other elements, there may be some differences, but that's general JavaScript programming and obviously we won't be able to show you every details on that.
To causes the page to postback, you can either call __doPostBack or eo_Callback function. Both again are JavaScript programming. eo_Callback is associated with our Callback control and you can find detailed documentation in the help file. __doPostBack is pretty much part of ASP.NET and you will need to consult MS resources to get more details on that.
Hope this helps.
Thanks
|
|
Rank: Member Groups: Member
Joined: 1/24/2008 Posts: 13
|
Hi, Thanks for helping me with this challenge. (challenging for me anyway.).
Code: Visual Basic.NET
Private Sub ProgressBar1_RunTask(ByVal sender As Object, ByVal e As EO.Web.ProgressTaskEventArgs) Handles ProgressBar1.RunTask
MaxIrrLabel.Text = "Updated from ProgressBar1_RunTask"
e.UpdateProgress(50, "__doPostBack")
End Sub 'ProgressBar1_RunTask
Then I use the EO VB sample Javascript code to execute the __doPostBack. The progress bar is updated but the label is not. Again, I cannot simply send one variable back to the javascript to update a label because there are many labels and many text boxes that need to be updated. When I use a standard button, each label and text box is updated after the VB.NET sub has completed, how do I get these to update when I use your progress bar? Thanks in advance.
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,217
|
Hi Jon,
You might want to find somebody else around you for the questions. What you are asking is pretty much generic programming questions (for example, you are asking "I know how to handle one, but don't know how to handle two") and we do not support that. From our point of view, we have already explained to you how our control works, showed you the sample code and also pointed out the similarities between your case and our sample code, yet the code you posted is still out right wrong, as if you did not read what we tell you to read at all --- So we are not sure how we can help you further. Please keep in mind that our support staff will not code for you.
Thanks
|
|
Rank: Member Groups: Member
Joined: 1/24/2008 Posts: 13
|
Ok, figured out a way to do this: Visual Basic code passes a comma delimited string back to javascript:
Code: Visual Basic.NET
e.UpdateProgress((x / NumMeasurements) * 100, "<img src=""Images/Light_On.jpg"" Height=""50px"" Width = ""50px"">," _
& MaxIrr & "," & FinalIrr & "," & InstanttoEquil & "")
Then catch and parse using javascript:
Code: JavaScript
function OnProgress(progressBar)
{
//progressBar extra data structure: (ImageDiv, MaxIrrLabel, FinalIrrLabel, InstanttoEquilButton)
var extraData = progressBar.getExtraData();
if (extraData)
{
var progressBar_array=extraData.split(",");
var div = document.getElementById("divStatus");
div.innerHTML = progressBar_array[0];
document.getElementById("MaxIrrLabel_Div").innerHTML = progressBar_array[1];
document.getElementById("FinalIrrLabel_Div").innerHTML = progressBar_array[2];
document.getElementById("InstanttoEquilButton_Div").innerHTML = progressBar_array[3];
}
}
</script>
which updates the appropriate <div> tags in the html:
Code: HTML/ASPX
<div id="MaxIrrLabel_Div">
<asp:Label ID="MaxIrrLabel" runat="server"></asp:Label>
</div>
What I don't know how to do is pass an array back to the browser. This isn't a pretty solution but it works. I figure I can pass a comma delimited string with name:value pairs in comma delimited format but this seems like a hokey solution. Just wanted to post my solution in case someone else out there is asking the same question.
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,217
|
Thanks for sharing!
|
|
Rank: Member Groups: Member
Joined: 1/24/2008 Posts: 13
|
Quick question. What is the maximum string length that can be passed back to the Javascript?
|
|
Rank: Administration Groups: Administration
Joined: 5/27/2007 Posts: 24,217
|
We are not aware of any restrictions on our side except for system resource related, for example, a huge string has the potential to run out of your server memory. Nodes in between, for example, a proxy server may have some restrictions as well, it may drop the whole package if it thinks it too big. So in any case, keep it as small as possible.
|
|