The dynamic page is an interesting idea. I also thought of outputting
to a non-visible Gridview, and then having the javascript try to
scrape the resulting HTML table in the code. After doing a bit more
javascript digging though, I decided to use ASP.NET AJAX to create a
WebService that utilizes the [ScriptService] and [ScriptMethod]
attribute tags. This lets me access the webservice via the javascript
directly:
<asp:ScriptManager ID="ScriptManager" runat="server">
<Services>
<asp:ServiceReference Path="~/ReportWS.asmx" />
</Services>
</asp:ScriptManager>
<!--Load the AJAX API-->
<script type="text/javascript" src="http://www.google.com/jsapi"></
script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["piechart"]});
</script>
<script type="text/javascript">
function findHelloService()
{
ReportWS.GetReport(function(result) {
$get("WSresult").innerHTML = result;
var JSONObject = result;
var data = new google.visualization.DataTable(JSONObject);
var chart = new google.visualization.PieChart
(document.getElementById('chart_div'));
chart.draw(data, {width: 400, height: 240, is3D:
true, title: 'My Daily Activities'});
});
}
Now I'm faced with a new problem though. How do I get my JSON string
into an object that Google recognizes?
My JSON String looks like this:
{"Table" : [{"AccountName" : "ClientA","Group" : "GroupA","Metric" :
"348"},{"AccountName" : "ClientA","Group" : "GroupB","Metric" :
"25502"},{"AccountName" : "ClientA","Group" : "GroupC","Metric" :
"2228"},{"AccountName" : "ClientA","Group" : "GroupC","Impressions" :
"0"}]};
The Javascript is giving me the error:
Line: 93
Char: 17
Error: 'this.A' is null or not an object
... so I think something inside the Google Javascript code is failing
but I'm not entirely sure why. Is my JSON string invalid compared to
what Google is expecting?
Thanks,
-Ned
On Apr 1, 3:18 am, VizBoy <[email protected]> wrote:
> Hi,
>
> In general there are two ways you can go about getting the data from your
> server to the visualizations on the client-side.
>
> 1. Generate the html page dynamically (Asp .NET does this well) and put in
> the html some static javascript containing your data table's json. For
> instance, you have a urlwww.myserver.com/mypage.aspxwhich generates an
> html page containing, among other things this:
> <script>
> var json = {cols: [...], rows: [...]};
> var dataTable = new google.visualization.DataTable(json);
> ...
> </script>
>
> 2. Become a data source. You need to conform to the protocol described
> here:http://code.google.com/apis/visualization/documentation/dev/implement...
> Then you need to expose a url (can be a web service, i believe, if a web
> service doesn't have problems with returning a simple text string without
> any special headers it adds itself).
> Say you exposewww.myserver.com/myservice
> And then in the client side (this can be a static html file, or a dynamic
> one created by Asp .NET, doesn't matter) you can have something like this:
> <script>
> var query = new
> google.visualization.Query('http://www.myserver.com/myservice');
> query.send(handleResponse);
> function handleResponse(response) {
> ...}
>
> </script>
> See further documentation of sending requests via the Query object
> here:http://code.google.com/apis/visualization/documentation/queries.html
>
> To choose between 1 and 2, the main thing that should guide you is whether
> you write all your own pages (choose 1) or whether you will want your data
> to be accessed by pages written by someone else, or by Google Visualization
> Gadgets, etc (choose 2).
>
> Hope this helps.
>
> - VizBoy.
>
> On Wed, Apr 1, 2009 at 12:13 AM, Ned <[email protected]> wrote:
>
> > Hello,
>
> > I have a Web Application Report Engine written in C# which will take
> > user parameters, run a SQL query to get Report Data, and then make
> > some modifications to the DataSet before finally outputting it to the
> > screen as an ASP GridView. I've been experimenting with the Google
> > Visualization API, and thought I would try using the API as a graphing
> > engine for all my data. My question is, what is the best way to
> > access the data generated by the C# code inside the javascript for the
> > Google Vis. API?
>
> > I was experimenting with writing a C# WebService that would output a
> > JSON formatted string which represents the C# DataSet. The WebService
> > is correctly outputting the JSON string, but how do I call the
> > WebService using the google javascript?
>
> > Additionally, is there a better way of going about this rather than
> > the creation of a WebService to output data?
>
> > Thanks!
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Google Visualization API" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/google-visualization-api?hl=en
-~----------~----~----~----~------~----~------~--~---