none
Gerar PDF Chart ou img MVC4 C# RRS feed

  • Pergunta

  • Eu usei o Rotativa W7 para gerar relatorio PDF, mas se preciso neste PDF de img ou chart do google as imagens não aparecem. Alguém tem alguma sugestão? 

    • Editado Wilson Boris segunda-feira, 31 de março de 2014 12:01 erro
    domingo, 30 de março de 2014 19:57

Respostas

  • Agora sim:

    CÓDIGO COMPLETO

    ......index
    
     <a href="/AARH/ImprimirExameAARH">Gerar pdf</a>
    ________________________________________
    ....controller
    public ActionResult ImprimirExameAARH()
            {
                ViewAsPdf pdf = new ViewAsPdf();
                pdf.ViewName = "ImprimirExameAARH";
                ViewBag.Data = GerandoDados();
                return pdf;
            }
    ___________________________________________
    .....controler
            private string GerandoDados()
            {
                var query = from OJ_Prod_AARH in db.OJ_Prod_AARH
                            from Ag_Pol_C_Pessoa_Sexo in db.Ag_Pol_C_Pessoa_Sexo
                            from Ag_Soc_PF in db.Ag_Soc_PF
                            where
                              Ag_Pol_C_Pessoa_Sexo.id == (Int32)Ag_Soc_PF.cod_PF_Sexo &&
                              OJ_Prod_AARH.cod_PF == (Int32)Ag_Soc_PF.id
                            group OJ_Prod_AARH by new
                            {
                                Ag_Soc_PF.cod_PF_Sexo,
                                Ag_Pol_C_Pessoa_Sexo.descricao
                            } into g
                            select new
                            {
                                Numero = g.Count(p => p.Ag_Soc_PF.cod_PF_Sexo != null),
                                Sexo = g.Key.descricao
                            };
                StringBuilder str = new StringBuilder();
                str.AppendFormat("['{0}','{1}']", "Sexo", "Numero");
                foreach (var item in query.ToArray())
                {
                    str.AppendFormat(",['{0}',{1}]", item.Sexo, item.Numero);
                }
    
    
                string teste = str.ToString();
                return str.ToString();
            }
    ______________________________________
    ......ImprimirExameAARH.cshtml
    
    @{ Layout = null; }
    <!DOCTYPE html>
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>PdfView</title>
        @Scripts.Render("~/bundles/jquery")
        @Scripts.Render("~/bundles/jqueryval")
        @Scripts.Render("~/bundles/jqueryui")
        <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    
        <script type="text/javascript">
    
            google.load("visualization", "1", { packages: ["corechart"] });
            google.setOnLoadCallback(drawChart);
           function drawChart() {
    
    	var data = google.visualization.arrayToDataTable(@Html.Raw("[" + ViewBag.Data + "]"));
    	var options = { title: 'Totalizando Meses' };
    	var chart = new google.visualization.PieChart(document.getElementById('piechart'));
    	chart.draw(data, options);
    }
        </script>
    </head>
    <body>
        <div id="piechart" style="width: 900px; height: 500px;"></div>
        
    </body>
    </html>


    • Editado Wilson Boris quarta-feira, 2 de abril de 2014 01:12 COMPLEMENTO
    • Marcado como Resposta Wilson Boris quarta-feira, 2 de abril de 2014 01:13
    quarta-feira, 2 de abril de 2014 01:02
  • Fúlvio, desculpe-me, mas eu não sei como gerar os dados partindo da minha consulta.


     
    public String ExameAARH(int id = 0)
    {
    	var query = from OJ_Prod_AARH in db.OJ_Prod_AARH
    				from Ag_Pol_C_Pessoa_Genero in db.Ag_Pol_C_Pessoa_Genero
    				from Ag_Soc_PF in db.Ag_Soc_PF
    				where
    				  Ag_Pol_C_Pessoa_Genero.id == (Int32)Ag_Soc_PF.cod_PF_Genero &&
    				  OJ_Prod_AARH.cod_PF == (Int32)Ag_Soc_PF.id
    				group OJ_Prod_AARH by new
    				{
    					Ag_Soc_PF.cod_PF_Genero,
    					Ag_Pol_C_Pessoa_Genero.descricao
    				} into g
    				select new
    				{
    					Numero = g.Count(p => p.Ag_Soc_PF.cod_PF_Genero != null),
    					Sexo = g.Key.descricao
    				};
    	StringBuilder str = new StringBuilder();
    	str.AppendFormat("['{0}','{1}'],", "Numero", "Sexo");
    	foreach (var item in query.ToArray())
    	{
    		str.AppendFormat(",[{0},'{1}']", item.Numero, item.Sexo);
    	}
    	return str.ToString();
    }

    Crie um metodo assim que gerará a string assim:

    [["Numero":13,"Sexo":"Ignorado  "],["Numero":1419,"Sexo":"Masculino "],["Numero":1220,"Sexo":"Feminino  "]]

    Crie um ActionView no controller 

    public ActionResult AbrirPDF()
    {
    	ViewBag.Data = ExameAARH(1);
    	return View();
    }

    E uma view com o mesmo nome da action (AbrirPDF)

    @{ Layout = null; }
    <!DOCTYPE html>
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>PdfView</title>
        <script src="/Scripts/jquery-1.8.2.js"></script>
        <script type="text/javascript" src="https://www.google.com/jsapi"></script>
        <script type="text/javascript">
            google.load("visualization", "1", { packages: ["corechart"] });        
            google.setOnLoadCallback(drawChart);
            function drawChart() {
                var data = google.visualization.arrayToDataTable(@Html.Raw("[" + ViewBag.Data + "]"));
                var options = { title: 'Totalizando Meses' };
                var chart = new google.visualization.PieChart(document.getElementById('piechart'));
                chart.draw(data, options);
            }
        </script>
    </head>
    <body>    
        <div id="piechart" style="width: 900px; height: 500px;"></div>    
    </body>
    </html>
    Bom espero que tenha ajudado!




    Fulvio Cezar Canducci Dias


    segunda-feira, 31 de março de 2014 23:50
  • //Ta assim

    function drawChart() { var data = google.visualization.arrayToDataTable([['Numero','Sexo'],[13,'Ignorado '],[1419,'Masculino '],[1220,'Feminino ']]); data.addColumn('string', 'Sexo'); data.addColumn('number', 'Numero'); var options = { title: 'Totalizando Meses' }; var chart = new google.visualization.PieChart(document.getElementById('piechart')); chart.draw(data, options); } //troque por essa e retire data.AddColumn function drawChart() { var data = google.visualization.arrayToDataTable(@Html.Raw("[" + ViewBag.Data + "]")); var options = { title: 'Totalizando Meses' }; var chart = new google.visualization.PieChart(document.getElementById('piechart')); chart.draw(data, options); }



    Fulvio Cezar Canducci Dias

    • Marcado como Resposta Wilson Boris terça-feira, 1 de abril de 2014 19:19
    terça-feira, 1 de abril de 2014 15:10

Todas as Respostas

  • Eu fiz uma codificação de exemplo, com o exemplo padrão do Google:

    @model IEnumerable<MvcApplication4PDF.Models.Pessoa>
    @{
        Layout = null;
    }
    <!DOCTYPE html>
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>PdfView</title>
        <script type="text/javascript" src="https://www.google.com/jsapi"></script>
        <script type="text/javascript">
            google.load("visualization", "1", { packages: ["corechart"] });
            google.setOnLoadCallback(drawChart);
            function drawChart() {
                var data = google.visualization.arrayToDataTable([
                  ['Task', 'Hours per Day'],
                  ['Work', 11],
                  ['Eat', 2],
                  ['Commute', 2],
                  ['Watch TV', 2],
                  ['Sleep', 7]
                ]);
    
                var options = {
                    title: 'My Daily Activities'
                };
    
                var chart = new google.visualization.PieChart(document.getElementById('piechart'));
                chart.draw(data, options);
            }
        </script>
    </head>
    <body>
        <table border="0" width="100%">
            <tr>
                <td width="20%" style="width:20%; text-align:center">Código</td>
                <td width="80%" style="width:80%; text-align:center">Nome</td>
            </tr>
            @foreach (MvcApplication4PDF.Models.Pessoa pessoa in Model)
            {
                <tr>
                    <td width="20%" style="width:20%; text-align:center">@String.Format("{0:00000}", pessoa.Id)</td>
                    <td width="80%" style="width:80%; text-align:left">@pessoa.Nome</td>
                </tr>
            }
        </table>
        <div id="piechart" style="width: 900px; height: 500px;"></div>
    </body>
    </html>

    Com seguinte ActionResult do Controller Home utilizado Rotativa:

    public ActionResult PdfView()
    {
    	ViewAsPdf pdf = new ViewAsPdf();
    	pdf.Model = new List<Pessoa>(){
    		new Pessoa(){ Id = 1, Nome = "Pessoa 1"},
    		new Pessoa(){ Id = 2, Nome = "Pessoa 2"},
    		new Pessoa(){ Id = 3, Nome = "Pessoa 3"}
    	};
    	pdf.ViewName = "PdfView";
    	return pdf;
    }

    e obtive esse resultado:

    No meu caso funcionou certinho, será que poderíamos ver seu código ou então alguma coisa que ache pertinente no seu código para mostrar ???


    Fulvio Cezar Canducci Dias

    segunda-feira, 31 de março de 2014 14:21
  • Sem dúvida, o código:

    Controller:

      public ActionResult ExameAARH(int id = 0)
            {
                OJ_Prod_AARH aarh = db.OJ_Prod_AARH.Find(id);
                if (aarh == null)
                {
                    return HttpNotFound();
                }
                var PDF = new ViewAsPdf("ExameAARH", aarh);
                return PDF;
            }
    View:
    @{
        ViewBag.Title = "ImprimirExameAARH";
        Layout = "~/Views/Shared/_LayoutInterno.cshtml";
    }
    
    <legend>EXAME LABORATORIAL - RAIVA ANIMAL</legend>
    <div><a><img class="img-responsive" src="../../Imagem/Logo/Brasao.jpg" width=" 100" height="100" /></a></div>
    <br />
    
    <div>
        NÚM. AMOSTRA
        <input class="text" />
    </div>
    PDFImg: Brasao.jpg ?


    segunda-feira, 31 de março de 2014 14:37
  • Sem dúvida, o código:

    Controller:

      public ActionResult ExameAARH(int id = 0)
            {
                OJ_Prod_AARH aarh = db.OJ_Prod_AARH.Find(id);
                if (aarh == null)
                {
                    return HttpNotFound();
                }
                var PDF = new ViewAsPdf("ExameAARH", aarh);
                return PDF;
            }
    View:
    @{
        ViewBag.Title = "ImprimirExameAARH";
        Layout = "~/Views/Shared/_LayoutInterno.cshtml";
    }
    
    <legend>EXAME LABORATORIAL - RAIVA ANIMAL</legend>
    <div><a><img class="img-responsive" src="../../Imagem/Logo/Brasao.jpg" width=" 100" height="100" /></a></div>
    <br />
    
    <div>
        NÚM. AMOSTRA
        <input class="text" />
    </div>
    PDFImg: Brasao.jpg ?


    Fiz aqui e gerou corretamentamente com imagem que está no projeto!

    faz o seguinte tire o class="img-responsive" para ver se muda algo!!!



    Fulvio Cezar Canducci Dias

    segunda-feira, 31 de março de 2014 16:14
  • A dúvida está quando os dados do gráfico são obtidos por ajax.
    segunda-feira, 31 de março de 2014 18:54
  • Bom quando é por ajax tem esse problema, 

    eu contorno o problema gerando a informação e enviando via ViewBag ... Assim:

    public ActionResult PdfView()
    {
    	ViewAsPdf pdf = new ViewAsPdf();
    	pdf.Model = new List<Pessoa>(){
    		new Pessoa(){ Id = 1, Nome = "Pessoa 1"},
    		new Pessoa(){ Id = 2, Nome = "Pessoa 2"},
    		new Pessoa(){ Id = 3, Nome = "Pessoa 3"}
    	};
    	pdf.ViewName = "PdfView";
    	ViewBag.Data = GerandoDados();
    	return pdf;
    }
    private string GerandoDados()
    {            
    	StringBuilder str = new StringBuilder();
    	str.AppendFormat("['{0}','{1}'],", "Mês","Total");
    	str.AppendFormat("['{0}',{1}],", "Janeiro","100");
    	str.AppendFormat("['{0}',{1}],", "Marco","90");
    	str.AppendFormat("['{0}',{1}],", "Abril", "190");
    	str.AppendFormat("['{0}',{1}],", "Maio", "45");
    	str.AppendFormat("['{0}',{1}],", "Junho", "49");
    	str.AppendFormat("['{0}',{1}],", "Julho", "90");
    	str.AppendFormat("['{0}',{1}],", "Agosto", "45");
    	str.AppendFormat("['{0}',{1}],", "Setembro", "125");
    	str.AppendFormat("['{0}',{1}],", "Outubro", "175");
    	str.AppendFormat("['{0}',{1}],", "Novembro", "60");
    	str.AppendFormat("['{0}',{1}]", "Dezembro", "200");
    	return str.ToString();
    }

    View:

    @model IEnumerable<MvcApplication4PDF.Models.Pessoa>
    @{
        Layout = null;
    }
    <!DOCTYPE html>
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>PdfView</title>
        <script src="/Scripts/jquery-1.8.2.js"></script>
        <script type="text/javascript" src="https://www.google.com/jsapi"></script>
        <script type="text/javascript">
            google.load("visualization", "1", { packages: ["corechart"] });        
            google.setOnLoadCallback(drawChart);
            function drawChart() {
                var data = google.visualization.arrayToDataTable(@Html.Raw("[" + ViewBag.Data + "]"));
                var options = { title: 'Totalizando Meses' };
                var chart = new google.visualization.PieChart(document.getElementById('piechart'));
                chart.draw(data, options);
            }
        </script>
    </head>
    <body>    
        
        <table border="0" style="width:100%">
            <tr>
                <td width="20%" style="width:20%; text-align:center">Código</td>
                <td width="80%" style="width:80%; text-align:center">Nome</td>
            </tr>
            @foreach (MvcApplication4PDF.Models.Pessoa pessoa in Model)
            {
                <tr>
                    <td width="20%" style="width:20%; text-align:center">@String.Format("{0:00000}", pessoa.Id)</td>
                    <td width="80%" style="width:80%; text-align:left">@pessoa.Nome</td>
                </tr>
            }
        </table>
        <div id="piechart" style="width: 900px; height: 500px;"></div>    
    </body>
    </html>

    Resultado:

    Ou seja, eu gero os dados e envio para a View como ViewBag direto para a página no Js do Google

    var data = google.visualization.arrayToDataTable(@Html.Raw("[" + ViewBag.Data + "]"));
    Se precisar de algo tamos ai


    Fulvio Cezar Canducci Dias

    segunda-feira, 31 de março de 2014 20:11
  • Fúlvio, 

    eu tentei com o código abaixo, mas retorna:

    [{"Numero":13,"Sexo":"Ignorado "},{"Numero":1419,"Sexo":"Masculino "},{"Numero":1220,"Sexo":"Feminino "}]

      public ActionResult ExameAARH(int id = 0)
            {
                var query = from OJ_Prod_AARH in db.OJ_Prod_AARH
                            from Ag_Pol_C_Pessoa_Genero in db.Ag_Pol_C_Pessoa_Genero
                            from Ag_Soc_PF in db.Ag_Soc_PF
                            where
                              Ag_Pol_C_Pessoa_Genero.id == (Int32)Ag_Soc_PF.cod_PF_Genero &&
                              OJ_Prod_AARH.cod_PF == (Int32)Ag_Soc_PF.id
                            group OJ_Prod_AARH by new
                            {
                                Ag_Soc_PF.cod_PF_Genero,
                                Ag_Pol_C_Pessoa_Genero.descricao
                            } into g
                            select new
                            {
                                Numero = g.Count(p => p.Ag_Soc_PF.cod_PF_Genero != null),
                                Sexo = g.Key.descricao
                            };
                   var l = query.ToArray();       
    
                ViewBag.lista = l;
                return Json(l, JsonRequestBehavior.AllowGet);
            }
    
    
    function drawChart() {
       
        $.get('/AARH/ExameAARH', {},
              function (data) {
                   
                    var tdata = google.visualization.arrayToDataTable(@Html.Raw("[" + ViewBag.lista + "]"));
                    tdata.addColumn('string', 'Genero');
                    tdata.addColumn('number', 'Numero');
    
                    console.log(data);
                    for (var i = 0; i < data.length; i++) {
                        tdata.addRow([data[i].Genero, data[i].Numero]);
                    }
                    var options = {
                        title: "...."
                    };               
                    var chart = new google.visualization.PieChart(document.getElementById('pizza'));
                    chart.draw(tdata, options);          
               });
            }
    
    
    </script>
    <div id="pizza" style="width: 900px; height: 500px;"></div>

    segunda-feira, 31 de março de 2014 22:12
  • Wilson Boris, 

    Não pode ser ajax pelo que eu fiz vários testes!

    tem que ser do jeito do meu exemplo

    e dá uma olhada nesse item ele que gera os dados!

    private string GerandoDados()
    {            
    	StringBuilder str = new StringBuilder();
    	str.AppendFormat("['{0}','{1}'],", "Mês","Total");
    	str.AppendFormat("['{0}',{1}],", "Janeiro","100");
    	str.AppendFormat("['{0}',{1}],", "Marco","90");
    	str.AppendFormat("['{0}',{1}],", "Abril", "190");
    	str.AppendFormat("['{0}',{1}],", "Maio", "45");
    	str.AppendFormat("['{0}',{1}],", "Junho", "49");
    	str.AppendFormat("['{0}',{1}],", "Julho", "90");
    	str.AppendFormat("['{0}',{1}],", "Agosto", "45");
    	str.AppendFormat("['{0}',{1}],", "Setembro", "125");
    	str.AppendFormat("['{0}',{1}],", "Outubro", "175");
    	str.AppendFormat("['{0}',{1}],", "Novembro", "60");
    	str.AppendFormat("['{0}',{1}]", "Dezembro", "200");
    	return str.ToString();
    }

    ficaria a string assim [['Novembro', 60], ['Dezembro', 200]] !!! 

    Ou seja carregou a página o dado tem que está lá!!!


    Fulvio Cezar Canducci Dias



    segunda-feira, 31 de março de 2014 22:16
  • Fúlvio, desculpe-me, mas eu não sei como gerar os dados partindo da minha consulta.


     
    segunda-feira, 31 de março de 2014 22:46
  • Fúlvio, desculpe-me, mas eu não sei como gerar os dados partindo da minha consulta.


     
    public String ExameAARH(int id = 0)
    {
    	var query = from OJ_Prod_AARH in db.OJ_Prod_AARH
    				from Ag_Pol_C_Pessoa_Genero in db.Ag_Pol_C_Pessoa_Genero
    				from Ag_Soc_PF in db.Ag_Soc_PF
    				where
    				  Ag_Pol_C_Pessoa_Genero.id == (Int32)Ag_Soc_PF.cod_PF_Genero &&
    				  OJ_Prod_AARH.cod_PF == (Int32)Ag_Soc_PF.id
    				group OJ_Prod_AARH by new
    				{
    					Ag_Soc_PF.cod_PF_Genero,
    					Ag_Pol_C_Pessoa_Genero.descricao
    				} into g
    				select new
    				{
    					Numero = g.Count(p => p.Ag_Soc_PF.cod_PF_Genero != null),
    					Sexo = g.Key.descricao
    				};
    	StringBuilder str = new StringBuilder();
    	str.AppendFormat("['{0}','{1}'],", "Numero", "Sexo");
    	foreach (var item in query.ToArray())
    	{
    		str.AppendFormat(",[{0},'{1}']", item.Numero, item.Sexo);
    	}
    	return str.ToString();
    }

    Crie um metodo assim que gerará a string assim:

    [["Numero":13,"Sexo":"Ignorado  "],["Numero":1419,"Sexo":"Masculino "],["Numero":1220,"Sexo":"Feminino  "]]

    Crie um ActionView no controller 

    public ActionResult AbrirPDF()
    {
    	ViewBag.Data = ExameAARH(1);
    	return View();
    }

    E uma view com o mesmo nome da action (AbrirPDF)

    @{ Layout = null; }
    <!DOCTYPE html>
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>PdfView</title>
        <script src="/Scripts/jquery-1.8.2.js"></script>
        <script type="text/javascript" src="https://www.google.com/jsapi"></script>
        <script type="text/javascript">
            google.load("visualization", "1", { packages: ["corechart"] });        
            google.setOnLoadCallback(drawChart);
            function drawChart() {
                var data = google.visualization.arrayToDataTable(@Html.Raw("[" + ViewBag.Data + "]"));
                var options = { title: 'Totalizando Meses' };
                var chart = new google.visualization.PieChart(document.getElementById('piechart'));
                chart.draw(data, options);
            }
        </script>
    </head>
    <body>    
        <div id="piechart" style="width: 900px; height: 500px;"></div>    
    </body>
    </html>
    Bom espero que tenha ajudado!




    Fulvio Cezar Canducci Dias


    segunda-feira, 31 de março de 2014 23:50
  • Com certeza está ajudando Fúlvio,

    esta retornando com erro na linha abaixo:

       var data = google.visualization.arrayToDataTable(@Html.Raw("[" + ViewBag.Data + "]"));

    Não é possível fazer associação em tempo de execução em uma referência nula

    Fazendo o BreakPoint:

    O Erro:

    terça-feira, 1 de abril de 2014 11:47
  • Com certeza está ajudando Fúlvio,

    esta retornando com erro na linha abaixo:

       var data = google.visualization.arrayToDataTable(@Html.Raw("[" + ViewBag.Data + "]"));

    Não é possível fazer associação em tempo de execução em uma referência nula

    Fazendo o BreakPoint:

    O Erro:

    Deixa eu ver seu Action ? Mande o código!

    Fulvio Cezar Canducci Dias

    terça-feira, 1 de abril de 2014 14:09
  • public ActionResult ExameAARH()
            {
                ViewBag.Data = GerandoDados();
                return View();
            }
    
            private string GerandoDados()
            {
                var query = from OJ_Prod_AARH in db.OJ_Prod_AARH
                            from Ag_Pol_C_Pessoa_Sexo in db.Ag_Pol_C_Pessoa_Sexo
                            from Ag_Soc_PF in db.Ag_Soc_PF
                            where
                              Ag_Pol_C_Pessoa_Sexo.id == (Int32)Ag_Soc_PF.cod_PF_Sexo &&
                              OJ_Prod_AARH.cod_PF == (Int32)Ag_Soc_PF.id
                            group OJ_Prod_AARH by new
                            {
                                Ag_Soc_PF.cod_PF_Sexo,
                                Ag_Pol_C_Pessoa_Sexo.descricao
                            } into g
                            select new
                            {
                                Numero = g.Count(p => p.Ag_Soc_PF.cod_PF_Sexo != null),
                                Sexo = g.Key.descricao
                            };
                StringBuilder str = new StringBuilder();
                str.AppendFormat("['{0}','{1}'],", "Numero", "Sexo");
                foreach (var item in query.ToArray())
                {
                    str.AppendFormat(",[{0},'{1}']", item.Numero, item.Sexo);
                }
                return str.ToString();
            }


    • Editado Wilson Boris terça-feira, 1 de abril de 2014 14:22 erro
    terça-feira, 1 de abril de 2014 14:17
  • public ActionResult ImprimirExameAARH()
    {
    	ViewBag.Data = GerandoDados();
    	return View();
    }
    
    private string GerandoDados()
    {
    	var query = from OJ_Prod_AARH in db.OJ_Prod_AARH
    				from Ag_Pol_C_Pessoa_Sexo in db.Ag_Pol_C_Pessoa_Sexo
    				from Ag_Soc_PF in db.Ag_Soc_PF
    				where
    				  Ag_Pol_C_Pessoa_Sexo.id == (Int32)Ag_Soc_PF.cod_PF_Sexo &&
    				  OJ_Prod_AARH.cod_PF == (Int32)Ag_Soc_PF.id
    				group OJ_Prod_AARH by new
    				{
    					Ag_Soc_PF.cod_PF_Sexo,
    					Ag_Pol_C_Pessoa_Sexo.descricao
    				} into g
    				select new
    				{
    					Numero = g.Count(p => p.Ag_Soc_PF.cod_PF_Sexo != null),
    					Sexo = g.Key.descricao
    				};
    	StringBuilder str = new StringBuilder();
    	str.AppendFormat("['{0}','{1}']", "Numero", "Sexo");
    	foreach (var item in query.ToArray())
    	{
    		str.AppendFormat(",[{0},'{1}']", item.Numero, item.Sexo);
    	}
    	return str.ToString();
    }

    Tinha na rotina anterior um virgula a mais então use essa de cima!

    Na imagem eu coloquei um flecha !!! então mande abre o dado da Key ? e envei a imagem novamente


    Fulvio Cezar Canducci Dias

    terça-feira, 1 de abril de 2014 14:28
  • terça-feira, 1 de abril de 2014 14:42
  • Bom ta enviando certo o erro que eu ainda não conseguir ver aonde ta errado !!!

    Fulvio Cezar Canducci Dias

    terça-feira, 1 de abril de 2014 14:51
  • Abaixo o retorno:

    :

    F12:

    GET http://localhost:55160/Scripts/jquery-1.8.2.js 404 (Not Found)

    Alterando para:

       @Scripts.Render("~/bundles/jquery")
        @Scripts.Render("~/bundles/jqueryval")
        @Scripts.Render("~/bundles/jqueryui")

    Mas ainda não rolou...

    • Editado Wilson Boris terça-feira, 1 de abril de 2014 15:03 complemento
    terça-feira, 1 de abril de 2014 14:57
  • Então!!! Ta quase !!!

    De um clique no meio do Html e "Exibir Código Fonte da Página" e mande aqui


    Fulvio Cezar Canducci Dias

    terça-feira, 1 de abril de 2014 15:00
  • <!DOCTYPE html>
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>PdfView</title>
        <script src="/Scripts/jquery-2.1.0.js"></script>
    
        <script src="/Scripts/jquery.unobtrusive-ajax.js"></script>
    <script src="/Scripts/jquery.validate.js"></script>
    <script src="/Scripts/jquery.validate.unobtrusive.js"></script>
    <script src="/Scripts/methods_pt.js"></script>
    
        <script src="/Scripts/jquery-ui-1.10.4.js"></script>
    
        <script type="text/javascript" src="https://www.google.com/jsapi"></script>
        <script type="text/javascript">
            google.load("visualization", "1", { packages: ["corechart"] });
            google.setOnLoadCallback(drawChart);
            function drawChart() {
                var data = google.visualization.arrayToDataTable([['Numero','Sexo'],[13,'Ignorado  '],[1419,'Masculino '],[1220,'Feminino  ']]);
                var options = { title: 'Totalizando Meses' };
                var chart = new google.visualization.PieChart(document.getElementById('piechart'));
                chart.draw(data, options);
            }
        </script>
    </head>
    <body>
        <div id="piechart" style="width: 900px; height: 500px;"></div>
    
    <!-- Visual Studio Browser Link -->
    <script type="application/json" id="__browserLink_initializationData">
        {"appName":"Chrome","requestId":"1658f528c6dc413393b3ce33744dba20"}
    </script>
    <script type="text/javascript" src="http://localhost:49499/bbdca76be33e4f918e44b8617a6cccaf/browserLink" async="async"></script>
    <!-- End Browser Link -->
    
    </body>


    • Editado Wilson Boris terça-feira, 1 de abril de 2014 15:07 correção
    terça-feira, 1 de abril de 2014 15:05
  • //Ta assim

    function drawChart() { var data = google.visualization.arrayToDataTable([['Numero','Sexo'],[13,'Ignorado '],[1419,'Masculino '],[1220,'Feminino ']]); data.addColumn('string', 'Sexo'); data.addColumn('number', 'Numero'); var options = { title: 'Totalizando Meses' }; var chart = new google.visualization.PieChart(document.getElementById('piechart')); chart.draw(data, options); } //troque por essa e retire data.AddColumn function drawChart() { var data = google.visualization.arrayToDataTable(@Html.Raw("[" + ViewBag.Data + "]")); var options = { title: 'Totalizando Meses' }; var chart = new google.visualization.PieChart(document.getElementById('piechart')); chart.draw(data, options); }



    Fulvio Cezar Canducci Dias

    • Marcado como Resposta Wilson Boris terça-feira, 1 de abril de 2014 19:19
    terça-feira, 1 de abril de 2014 15:10
  • Ok, alterado

    mas ainda não foi...

    terça-feira, 1 de abril de 2014 15:14
  • Ok, alterado

    mas ainda não foi...

    Complicado ... foram feitas mas, eu estava observando isso!

    F12:

    GET http://localhost:55160/Scripts/jquery-1.8.2.js 404 (Not Found)

    Verifique seu código certinho, verifique todas as entradas JS no seu código!


    Fulvio Cezar Canducci Dias

    terça-feira, 1 de abril de 2014 15:30
  • Opa, saiu o Gráfico, porém não gera o PDF com Rotativa W7, código abaixo, com o erro: "Table has no columns"

            public ActionResult ImprimirExameAARH()
            {
                var PDF = new ViewAsPdf("ExameAARH");
                return PDF;
            }

    <a href="/AARH/ImprimirExameAARH">Imprimir</a>

    terça-feira, 1 de abril de 2014 17:32
  • DE:

      <package id="RotativaW7" version="1.5.4" targetFramework="net40" />

    PARA:

    <package id="Rotativa" version="1.6.1" targetFramework="net40" />

    SEM SOLUÇÃO!
    • Editado Wilson Boris quarta-feira, 2 de abril de 2014 00:39 ERRO
    terça-feira, 1 de abril de 2014 19:19
  • Agora sim:

    CÓDIGO COMPLETO

    ......index
    
     <a href="/AARH/ImprimirExameAARH">Gerar pdf</a>
    ________________________________________
    ....controller
    public ActionResult ImprimirExameAARH()
            {
                ViewAsPdf pdf = new ViewAsPdf();
                pdf.ViewName = "ImprimirExameAARH";
                ViewBag.Data = GerandoDados();
                return pdf;
            }
    ___________________________________________
    .....controler
            private string GerandoDados()
            {
                var query = from OJ_Prod_AARH in db.OJ_Prod_AARH
                            from Ag_Pol_C_Pessoa_Sexo in db.Ag_Pol_C_Pessoa_Sexo
                            from Ag_Soc_PF in db.Ag_Soc_PF
                            where
                              Ag_Pol_C_Pessoa_Sexo.id == (Int32)Ag_Soc_PF.cod_PF_Sexo &&
                              OJ_Prod_AARH.cod_PF == (Int32)Ag_Soc_PF.id
                            group OJ_Prod_AARH by new
                            {
                                Ag_Soc_PF.cod_PF_Sexo,
                                Ag_Pol_C_Pessoa_Sexo.descricao
                            } into g
                            select new
                            {
                                Numero = g.Count(p => p.Ag_Soc_PF.cod_PF_Sexo != null),
                                Sexo = g.Key.descricao
                            };
                StringBuilder str = new StringBuilder();
                str.AppendFormat("['{0}','{1}']", "Sexo", "Numero");
                foreach (var item in query.ToArray())
                {
                    str.AppendFormat(",['{0}',{1}]", item.Sexo, item.Numero);
                }
    
    
                string teste = str.ToString();
                return str.ToString();
            }
    ______________________________________
    ......ImprimirExameAARH.cshtml
    
    @{ Layout = null; }
    <!DOCTYPE html>
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>PdfView</title>
        @Scripts.Render("~/bundles/jquery")
        @Scripts.Render("~/bundles/jqueryval")
        @Scripts.Render("~/bundles/jqueryui")
        <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    
        <script type="text/javascript">
    
            google.load("visualization", "1", { packages: ["corechart"] });
            google.setOnLoadCallback(drawChart);
           function drawChart() {
    
    	var data = google.visualization.arrayToDataTable(@Html.Raw("[" + ViewBag.Data + "]"));
    	var options = { title: 'Totalizando Meses' };
    	var chart = new google.visualization.PieChart(document.getElementById('piechart'));
    	chart.draw(data, options);
    }
        </script>
    </head>
    <body>
        <div id="piechart" style="width: 900px; height: 500px;"></div>
        
    </body>
    </html>


    • Editado Wilson Boris quarta-feira, 2 de abril de 2014 01:12 COMPLEMENTO
    • Marcado como Resposta Wilson Boris quarta-feira, 2 de abril de 2014 01:13
    quarta-feira, 2 de abril de 2014 01:02