Boa dia pessoal.
Não sei se o código que fiz está correto principalmente no Json, pois sou iniciante na área e tudo que fiz aqui agradeço aos professores do alura. Se alguém puder me ajudar ficarei muito grata.
Vou inserir o código que já fiz e se alguém souber o que está ocorrendo e puder me ajudar: Preciso incluir um botão ao lado de textbox com resultado da fórmula para que ao clicar neste seja exibido o conteúdo de valores da fórmula em uma tabela , por exemplo: Tenho a fómula : TESTE1 + TESTE2 / 100, desta fórmula tenho que pegar apenas TESTE1 e TESTE2 e pegar o valor, exibindo ao clicar no botão a tabela com os valores da formula, assim:
Codigo Empresa 1 Codigo Variavel 123 // Seria o TESTE1 Valor 100 // Valor de TESTE1
Codigo Empresa 1 Codigo Variavel 234 // Seria o TESTE2 Valor 20// Valor de TESTE2
Fiz assim no cs:
[WebMethod]
public static string montarTabelaConteudoFormula(ValorDaVariavelNumerico valorDaVariavelNumerico, StringBuilder htmlDivsConteudoDetalhado)
{
string formulaHtml = "";
formulaHtml = valorDaVariavelNumerico.Variavel.formula.Replace('@', '<').Replace('#', '>');// Tenho que pegar de uma fórmula
string[] separators = { "+", "-", "/", "*","(",")", " " }; // Separar o que não quero
string value = classesComun.converterFormulaHtmlToString(formulaHtml);
string[] variaveis = value.Split(separators, StringSplitOptions.RemoveEmptyEntries); // Do valor da fórmula pegar apenas as variáveis. Para cada variavel , pegar as variaveis da fórmula e montar objeto em formato tabela
foreach (var variavel in variaveis)
{
htmlDivsConteudoDetalhado.Append("<div class=\"div_conteudo_detalhes_relatorio\" id=\"" + valorDaVariavelNumerico.Variavel.codVariavel + "\">");
htmlDivsConteudoDetalhado.Append("<table id='tabelaDetalhes' class='tabelaConteudoDetalhado'>" +
"<tr>" +
"<td class=\"td_identificacao_linha\"> Código Empresa: </td>" +
"<td>" + valorDaVariavelNumerico.Empresa.codEmpresa + "</td>" +
"</tr>" +
"<tr>" +
"<td class=\"td_identificacao_linha\"> Código Variável: </td>" +
"<td>" + valorDaVariavelNumerico.codVariavel + "</td>" +
"</tr>" +
"<tr>" +
"<td class=\"td_identificacao_linha\"> Valor: </td>" +
"<td>" + valorDaVariavelNumerico.valor + "</td>" +
"</tr>" +
"</table>"
);
}
htmlDivsConteudoDetalhado.Append("</div>");
return htmlDivsConteudoDetalhado.ToString();
}
Isto deve ser exibido para cada variável que compõem a fórmula. Até aqui tudo bem, fiz esta função do lado servidor que ainda não consegui testa-la por causa do erro e quero passá-la para o lado cliente com o Json, assim:
Este método criado chamo do lado cliente:
function selecionaBotaoConteudoFormula(valorDaVariavelNumerico, htmlDivsConteudoDetalhado) {
$ajax({
type: 'POST',
url: document.URL + '/montarTabelaConteudoFormula',
contentType: "application/json; charset=utf-8",
data: "{ 'valorDaVariavelNumerico':' " + valorDaVariavelNumerico + "' , 'htmlDivsConteudoDetalhado':' " + htmlDivsConteudoDetalhado + "'}",
dataType: 'json',
success: function (results) {
results.d;
},
error: function (results) { escreveMensagem(results.d); }
}
O problema ocorre pois como o botão é dinamico e só aparece para as variáveis que possuem fórmula, faço da seguinte forma para chamar no onclick do lado servidor (cs) a função javascript do lado cliente:
htmlDivsConteudoVariavel.Append("<div class = definicaoFormula><i class='botao-conteudo-formula' onClick ='selecionaBotaoConteudoFormula(valorDaVariavelNumerico, htmlDivsDetalhesVariavel);'>...</i></div>");
No onclick chamo a função javaScript e está é responsável por recuperar o objeto e uma string Json do lado cliente. Sendo que ao clicar no botão aparece o seguinte erro no console:
Uncaught ReferenceError: showDivUpload is not defined at :1:1
A idéia é mostrar para o usuário a descrição dos valores do resultado da fórmula apresentado.
Obrigada. Flávia