ASP .NET - Criando gráficos dinâmicos com Google Chart, jQuery e Ajax (VB .NET)
Neste artigo vou mostrar como podemos criar gráficos dinâmicos usando a API Google Chart em aplicações ASP .NET usando a linguagem VB .NET, jQuery e Ajax. |
Quando se trata de apresentar dados "Uma imagem vale mais do que mil palavras" e por isso os gráficos são tão usados para esta finalidade. Dessa forma ter uma ferramenta simples, rápida e grátis e tudo o que um desenvolvedor deseja para realizar o seu trabalho em aplicações web.
Pois foi pensando nisso que a Google criou a API do Google Chart Tools, também conhecida como Chart API, que faz parte do projeto Google Visualization que também engloba a ferramenta Interactive Charts.
Para usar a ferramenta basta você chamar a sua URL enviando enviando os dados do gráfico via query string e pronto. A chamada retorna a imagem do gráfico.
Se você esta desconfiando da simplicidade copie o código abaixo em um arquivo .html e abra em qualquer navegador:
<img src="http://chart.apis.google.com/chart?chxt=x,y&cht=bvs&chd=t:60,70,85,65,40&chco=76A4FB&chls=2.0&chs=180x150&chxl=0:|Jan|Fev|Mar|Abr|Mai" alt="Macoratti .net" />
|
E você verá o gráfico de barras conforme mostra a figura abaixo:
Observe que o gráfico foi montado com os eixos x e y e os rótulos (Jan, Fev, Mar, etc.) e os valores nas barras. Note também que o tamanho do gráfico esta definido na URL (380x250).
Da mesma forma que criamos esse gráfico de barras simples podemos criar gráficos de pizza, linha, colunas, etc.
Então se você deseja se aprofundar no assunto consulte a documentação da API neste link : https://developers.google.com/chart/?hl=pt-br
Neste artigo eu vou usar os recursos da API do Google Chart para criar gráficos em páginas ASP .NET usando a linguagem VB .NET e jQuery.
Recursos usados:
Criando o projeto ASP .NET no Visual Studio Express 2013for web
Abra o VS Express 2013 for web e clique em New Project;
A seguir selecione a linguagem Visual Basic e o template Web -> ASP .NET Web Application;
Informe o nome ChartGoogle_AspNet e clique no botão OK;
A seguir selecione o template Empty e marque Web Forms e clique no botão OK;
Vamos agora incluir uma página Web Form no projeto clique no menu PROJECT e a seguir Add New Item;
Selecione Web Form e informe o nome Default.aspx e clique no botão Add;
Para este artigo eu vou criar uma tabela chamada DadosGrafico no banco de dados Cadastro.mdf do SQL Server.
Abaixo vemos a estrutura desta tabela e alguns dados que foram inseridos para utilização na criação do nosso gráfico.
A seguir vamos definir no arquivo code-behind Default.aspx.vb um método chamado GetDadosGrafico que iremos decorar com o atributo WebMethod de forma que o mesmo será exposto como parte de um XML Web Service.
Defina o código abaixo no arquivo Default.aspx.vb :
Imports System.Web.Services
Imports System.Data
Imports System.Data.SqlClient
Partial Class _Default
Inherits System.Web.UI.Page
<WebMethod> _
Public Shared Function GetDadosGrafico() As List(Of DadosDetalhes)
Dim dt As New DataTable()
Using con As New SqlConnection("Data Source=(LocalDB)\v11.0;Initial Catalog=Cadastro;Integrated Security=True")
con.Open()
Dim cmd As New SqlCommand("select nome, total=valor from DadosGrafico order by total desc", con)
Dim da As New SqlDataAdapter(cmd)
da.Fill(dt)
con.Close()
End Using
Dim listaDados As New List(Of DadosDetalhes)()
For Each dtrow As DataRow In dt.Rows
Dim details As New DadosDetalhes()
details.NomePais = dtrow(0).ToString()
details.Total = Convert.ToInt32(dtrow(1))
listaDados.Add(details)
Next
Return listaDados
End Function
End
Public Class DadosDetalhes
Public Property NomePais() As String
Public Property Total() As Integer
End Class
|
Note que no arquivo code-behind temos a definição do método GetDadosGrafico() que acessa o banco de dados Cadastro.mdf e retorna os dados da tabela DadosGrafico.
O código monta uma lista do tipo DadosDetalhes que é uma classe que foi definida para representar os dados que vamos usar no gráfico.
Agora vamos abrir o arquivo Default.aspx no modo Source e definir entre as tags <head> o script para referenciar a biblioteca jQUery e a API GoogleChart:
<script src="http://code.jquery.com/jquery-1.8.2.js"></script>
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
google.load('visualization', '1', { packages: ['corechart'] });
</script>
|
Para exibir os gráficos do Google Chart precisamos carregar 3 bibliotecas:
A seguir vamos definir uma função usando jQuery entre as tagas <head> que irá fazer uma chamada a partir do cliente para obter o objeto JSON contendo os dados a serem exibidos no gráfico. (Note que eu não preciso serializar a string JSON).
<script type="text/javascript">
$(function () {
$.ajax({
type: 'POST',
dataType: 'json',
contentType: 'application/json',
url: 'Default.aspx/GetDadosGrafico',
data: '{}',
success:
function (response) {
drawchart(response.d);
},
error: function () {
alert("Erro ao carregar dados! Tente novamente.");
}
});
})
function drawchart(dataValues) {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Column Name');
data.addColumn('number', 'Column Value');
for (var i = 0; i < dataValues.length; i++) {
data.addRow([dataValues[i].NomePais, dataValues[i].Total]);
}
new google.visualization.PieChart(document.getElementById('chartdiv')).
draw(data, { title: "JcmSoft - Participação Mercado por País" });
}
</script>
|
Observe que o código jQuery chama o método GetDadosGrafico e retornar os dados JSON para a seguir chamar a função drawchart() passando os valores retornados para exibir no gráfico.
Na função drawchart o DataTable é inicializado, as colunas são adicionados a ele, e, em seguida, os dados são inseridos. Finalmente, o novo PieChart é inicializado e seu método draw é invocado.
O método PieChart da API do Google indica que vamos criar uma gráfico de pizza. Para criar outros tipos de gráficos basta usar outros métodos como:
Para renderizar o gráfico precisamos definir uma <div> na página Default.aspx identificada por 'chartdiv' (pode ser qualquer nome).
...
body>
<form id="form1" runat="server">
<h2>Macoratti .net</h2>
<hr />
<div id="chartdiv" style="width: 600px; height: 350px;">
</div>
</form>
</body>
...
|
Abaixo temos o código completo da página Default.aspx:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>jQuery Grafico de Pizza Google com asp.net</title>
<script src="http://code.jquery.com/jquery-1.8.2.js"></script>
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
google.load('visualization', '1', { packages: ['corechart'] });
</script>
<script type="text/javascript">
$(function () {
$.ajax({
type: 'POST',
dataType: 'json',
contentType: 'application/json',
url: 'Default.aspx/GetDadosGrafico',
data: '{}',
success:
function (response) {
drawchart(response.d);
},
error: function () {
alert("Erro ao carregar dados! Tente novamente.");
}
});
})
function drawchart(dataValues) {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Column Name');
data.addColumn('number', 'Column Value');
for (var i = 0; i < dataValues.length; i++) {
data.addRow([dataValues[i].NomePais, dataValues[i].Total]);
}
new google.visualization.PieChart(document.getElementById('chartdiv')).
draw(data, { title: "JcmSoft - Participação Mercado por País" });
}
</script>
</head>
<body>
<form id="form1" runat="server">
<h2>Macoratti .net</h2>
<hr />
<div id="chartdiv" style="width: 600px; height: 350px;">
</div>
</form>
</body>
</html>
|
Executando o projeto ASP .NET iremos obter o seguinte resultado:
Usando o método ColumnChart e definindo data.addColumn('number', 'Paises'); teremos o seguinte gráfico:
E usando o método
LineChart e definindo data.addColumn('number',
'Paises'); teremos o resultado a seguir:
Pegue o projeto completo aqui: ChartGoogle_AspNet.zip
João 3:17 Porque Deus enviou o seu Filho ao mundo, não para que julgasse o mundo, mas para que o mundo fosse salvo por ele.
João 3:18 Quem crê nele não é julgado; mas quem não crê, já está julgado; porquanto não crê no nome do unigênito Filho de Deus.
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ?
|
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Criando gráficos no VB 2010 Express Edition II - Macoratti.net