last day (14 days later) » 

1:05 PM
2
Q: Converter string em parâmetro para arrayToDataTable(varString)

Cleber TeixeiraOlá, estou começando a usar ajax e a API do Google (chart) para criar gráficos. Utilizo um Generic Handler que chamei de 'ColaboradoresEmpresa.ashx', nele eu faço uma consulta no banco de dados e retorno uma string dessa forma; context.Response.Write(valores.ToString()); Os dados que eu receb...

 
uma pergunta, a variável valores do lado do servidor, é um array?
 
@EnzoTiezzi é uma string no formato: "[['Empresa_', 'Colaboradores'], ['Cleber', 27000], ['Jonathan', 27000], ['Leonardo', 27000], ]". Não sei como convertê-la.
 
Como você obtém o valor dessa String no seu servidor?
 
@EnzoTiezzi eu faço uma consulta num banco de dados atravésde um arquivo .ashx, concateto e retorno uma string no formato acima e retorno ela pro ajax com um context.Response.Write(valores.ToString()); mas você também pode ler isso como context.Response.Write("[['Empresa_', 'Colaboradores'], ['Cleber', 27000], ['Jonathan', 27000], ['Leonardo', 27000], ]");
 
então, se puder, posta essa parte que você disse que concatena, porque dai podemos tentar resolver de maneira que já venha a informação correta, ou pelo menos a mais correta possível.
 
1:05 PM
@EnzoTiezzi postei o código, também tentei criar um vetor com o Ajax mas ele acusa "0x800a03f6 - Erro em tempo de execução do JavaScript: Caractere inválido". Código: var vet = JSON.parse(Valores); var data = google.visualization.arrayToDataTable(vet);
 
beleza, agora vamos arrumar isso, tem que ser arrumado pelo lado do servidor mesmo, vamos la
vamos fazer uma tentativa, a variável valores vai se tornar uma List<string> valores = new List<string>(); e você já colocar ali o valor que quer nela, valores.Add("['Empresa_', 'Colaboradores']");, esse é o primeiro passo
 
@EnzoTiezzi deixei o código assim: comando.Connection.Open();List<string> valores = new List<string>();valores.Add("[['Empresa_', 'Colaboradores']");SqlDataReader dr = comando.ExecuteReader();while (dr.Read()) {if (dr["NOMEFANTASIA"] != DBNull.Value && dr["QTD"] != DBNull.Value){valores.Add(",['" + dr["NOMEFANTASIA"].ToString() + "'," + dr["QTD"].ToString() + "]");}} valores.Add(", ]"); comando.Connection.Close();
 
faz uma variável String valor e dentro de seus ifs, substitui a variável valores por valor e no fim do seu while acrescenta valores.Add(valor); e valor = String.Empty;
 
@EnzoTiezzi fiz isso e executei com um alert(Valores); pra ver como ele retornaria. Retornou no alert um System.Collections.Generic.List'1[System.String] mas ainda continua com o erro Unhandled exception at line 181, column 38 in google.com/uds/api/visualization/1.0/… 0x800a139e - Erro em tempo de execução do JavaScript: Not an array ao tentar definir o valor da variável data no Ajax
 
da uma olhada se no lado do servidor, a lista está com os valores desejados.
bem melhor aqui se puder
 
1:13 PM
Eu ainda não tinha usado o bate-papo rs
Parece melhor mesmo!
Me parece que esse formato [['Empresa_', 'Colaboradores'], ['Cleber', 27000], ['Jonathan', 27000], ['Leonardo', 27000], ]
Pode ser dividido assim
[ ['Empresa_', 'Colaboradores'], ['Cleber', 27000] , ['Jonathan', 27000], ['Leonardo', 27000] , ]
[__________['Empresa_', 'Colaboradores']___________________, ['Cleber', 27000], ['Jonathan', 27000], ['Leonardo', 27000],_________________ ]
 
vamos tentar fazer umas coisas, pq do jeito que foi feito, complicou um pouco
 
primeiro, inclui issso
contentType: 'application/json; charset=utf-8',
dataType: 'json',
no seu ajax no jquery
 
incluí
 
beleza, como ta o código lá que te pedi pra arrumar
 
1:18 PM
Do servidor?
O .ashx?
comando.Connection.Open();
string valor = "";
List<string> valores = new List<string>();
valores.Add("[['Empresa_', 'Colaboradores']");
SqlDataReader dr = comando.ExecuteReader();
while (dr.Read())
{
if (dr["NOMEFANTASIA"] != DBNull.Value && dr["QTD"] != DBNull.Value)
{
valor = ",['" + dr["NOMEFANTASIA"].ToString() + "'," + dr["QTD"].ToString() + "]";
}
valores.Add(valor);
valor = string.Empty;
}
valores.Add(", ]");
comando.Connection.Close();
context.Response.Write(valores);
 
valores.Add no fim do while, não depois
logo depois do string.empty
 
É que já tem um "valores.add(valor);" em cima do string.Empty, esse último "valores.Add(", ]");" é o que fecha aquele primeiro "valores.Add("[['Empresa_', 'Colaboradores']");"
 
esse valores nessa parte do servidor, ta vindo como? um vetor certinho?
to achando melhor a gente reestruturar isso
 
Um vetor certinho de 5 posições
reestruturar... Tudo bem!
 
vamos fazer o seguinte
isso valores.Add("[['Empresa_', 'Colaboradores']");
vai virar isso
valores.Add("Empresa');
valores.Add("Colaboradores');
dentro do IF o valor = vai virar
valores.Add( dr["NOMEFANTASIA"].ToString());
valores.Add( dr["QTD"].ToString());
vc vai incluir essas 2 linhas
 
1:35 PM
ok
Ficou Assim
List<string> valores = new List<string>();
valores.Add("Empresa_");
valores.Add("Colaboradores");
SqlDataReader dr = comando.ExecuteReader();
while (dr.Read())
{
if (dr["NOMEFANTASIA"] != DBNull.Value && dr["QTD"] != DBNull.Value)
{
valores.Add(dr["NOMEFANTASIA"].ToString());
valores.Add(dr["QTD"].ToString());
}
}
Deu um erro 200 ao executar
 
no final de tudo isso, essa lista ta com que valores?
ah, e lá em cima coloca essa linha também
context.Response.ContentType = "application/json";
 
Empresa_
Colaboradores
Cleber
27000
Jonathan
27000
Leonardo
27000
 
perfeito
agora no seu javascript, a variável Valores, chega como ?
 
Oops... Não está chegando... Dá um erro 200
 
1:51 PM
vc tirou o valores.add("],") certo ?
depois desse while, pode ja colocar valores dentro do context.response.write
 
Eu tirei o valores.add("],")
Depois do While só tenho o comando.Connection.Close();
context.Response.Write(valores);
O código do servidor está assim
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "application/json";
SqlCommand comando = new SqlCommand();
comando.Connection = new SqlConnection(ConfigurationManager.ConnectionStrings["DB"].ConnectionString);
comando.CommandText = "select\Consulta";
comando.Connection.Open();
List<string> valores = new List<string>();
valores.Add("Empresa_");
valores.Add("Colaboradores");
SqlDataReader dr = comando.ExecuteReader();
while (dr.Read())
{
if (dr["NOMEFANTASIA"] != DBNull.Value && dr["QTD"] != DBNull.Value)
 
2:04 PM
ele da erro em que ponto no jquery????
 
Ele não chega a entrar no sucess
cai direto no error: function (data) { alert("ERRO: " + data.status); },
 
isso é bizarro, pq por documentação, status 200 é succesfull
 
Nossa.... Eu achei que fosse algum erro...
Vou tentar digitar a URL completa até o arquivo .ashx pra ver o que acontece
Quando eu digitei o URL completo até o arquivo ashx ele fez download de .json
Mas parece ter um problema com o conteúdo
Abri o arquivo e o texto lá dentro é
System.Collections.Generic.List`1[System.String]
@EnzoTiezzi eu já tomei muito do seu tempo. Agradeço por toda a ajuda. Eu vou continuar tentando... Se tiver alguma notícia boa eu compartilho
 
valeu
beleza
 
Muito obrigado mesmo @EnzoTiezzi!
Até mais
 
2:17 PM
só mais uma coisa
2
Q: Google Chart arrayToDataTable formatted value not working

TerixI am followinf the google Chart documentation for arrayToDataTable and the example states that I can use formatted values, like that: var data = google.visualization.arrayToDataTable([ ['Employee Name', 'Salary'], ['Mike', {v:22500, f:'18,500'}], ... where f:'18,500 is the formatted value to s...

toma esse link como base, que vai te ajudar
basicamente agora é você receber o array, e colocar exatamente como esse exemplo do link que seu problema vai ser resolvido :D
falou :D
 

last day (14 days later) »