Solved

Creating & calling javascript function through silverlight event

Posted on 2010-11-09
6
1,030 Views
Last Modified: 2013-11-12
Hi

I'm working on a Visual Studio.NET 2010 Silverlight Application using C#. I've got a Silverlight Navigation Template which I've added a Master Page to. What i'd like to know is how to mimic the ClientScript.RegisterClientScriptBlock using SilverLight.  
 
I want one Silverlight event to write the javascript function to the Master Page and another Silverlight event to call that Javascript Function.
 
I have to do it this way as I'm using an embedded print runtime object which can extract the printer attached to the local pc.

Thanks
0
Comment
Question by:razza_b
  • 3
  • 2
6 Comments
 
LVL 18

Expert Comment

by:carlnorrbom
ID: 34099884
Hi,

In silverlight you can run javascript directly by using:

HtmlPage.Window.Invoke();

/Carl.
0
 
LVL 29

Expert Comment

by:Gautham Janardhan
ID: 34099986
you can store the script into a string in the first event you want to create it and then where you want to invoke it you can do
System.Windows.Browser.HtmlPage.Window.Eval(script);
0
 
LVL 1

Author Comment

by:razza_b
ID: 34100565
I tried the following statement and got the following error:

  HtmlPage.Window.Eval("<script>alert('Print Job finished!');</script>");


System.InvalidOperationException was unhandled by user code
  Message=Microsoft JScript compilation error Syntax error
  StackTrace:
       at System.Windows.Browser.HtmlWindow.Eval(String code)
       at SilverlightNavigationApplicationTest.MainPage.button2_Click(Object sender, RoutedEventArgs e)
       at System.Windows.Controls.Primitives.ButtonBase.OnClick()
       at System.Windows.Controls.Button.OnClick()
       at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
       at System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)
       at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)
  InnerException:

I tried adding the type and got the following error:

  HtmlPage.Window.Eval("<script type='text/javascript'>alert('Print Job finished!');</script>");

System.InvalidOperationException was unhandled by user code
  Message=Microsoft JScript compilation error Syntax error
  StackTrace:
       at System.Windows.Browser.HtmlWindow.Eval(String code)
       at SilverlightNavigationApplicationTest.MainPage.button2_Click(Object sender, RoutedEventArgs e)
       at System.Windows.Controls.Primitives.ButtonBase.OnClick()
       at System.Windows.Controls.Button.OnClick()
       at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
       at System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)
       at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)
  InnerException:


If I add the javascript function to my master page and use this it works.

   HtmlPage.Window.Invoke("CreatePrinterScript", null);

My issue is that I can’t write the javascript function to the master page.

I’ve even tried creating a Scriptable Managed Type with no success.
0
Backup Your Microsoft Windows Server®

Backup all your Microsoft Windows Server – on-premises, in remote locations, in private and hybrid clouds. Your entire Windows Server will be backed up in one easy step with patented, block-level disk imaging. We achieve RTOs (recovery time objectives) as low as 15 seconds.

 
LVL 29

Assisted Solution

by:Gautham Janardhan
Gautham Janardhan earned 500 total points
ID: 34100854
System.Windows.Browser.HtmlPage.Window.Eval("alert('hi there')");
0
 
LVL 29

Accepted Solution

by:
Gautham Janardhan earned 500 total points
ID: 34100859
"<script>" tags are not required
0
 
LVL 1

Author Comment

by:razza_b
ID: 34100908
The HtmlPage.Window.Eval(yourscript) worked. The reason it wasn't working before for me was because I was building the javascript string with the <script> tags and the function declaration.
I tested it first with HtmlPage.Window.Eval("alert('Test!');") It succeeded so it was a matter of stripping the headers from the code and testing again by passing my string var, HtmlPage.Window.Eval(JScript)

And this worked. So thanks.
0

Featured Post

Ransomware-A Revenue Bonanza for Service Providers

Ransomware – malware that gets on your customers’ computers, encrypts their data, and extorts a hefty ransom for the decryption keys – is a surging new threat.  The purpose of this eBook is to educate the reader about ransomware attacks.

Question has a verified solution.

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

This collection of functions covers all the normal rounding methods of just about any numeric value.
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…
Viewers will learn how to maximize accessibility options in an Excel workbook for users with accessibility issues.
The viewer will learn how to use a discrete random variable to simulate the return on an investment over a period of years, create a Monte Carlo simulation using the discrete random variable, and create a graph to represent the possible returns over…

932 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