none
Migrar funcion a proyecto mvc RRS feed

  • Pregunta

  • HOLA, PUES HE CREADO LA SIGUIENTE FUNCION, COMO VERAN RECIBE COMO PARAMETROS NOMBRES, UN DATASET Y LAS POSICIONES DE LOS ROWS Y UN CHART, YA QUE LEYENDO LOS DATOS DEL DATASET ME HACE UN GRAFICO DE TIPO PARETO.

    YA LLEVO 4 DIAS INTENTANDO IMPLEMENTARLA EN UNA APLICACION MVC, LA CUAL LA HE HECHO DE MUCHAS FORMAS Y NO HE PODIDO... LO QUE QUISIERA QUE ME APOYEN ES A VER SI ME DAN LA MANO AYUDANDO A HACER ESTA FUNCION TAMBIEN MVC, QUE QUIERO DECIR, AGREGARLE UN CONTROLER, UNA VISTA Y UN MODEL.

    public static Chart graficar_pareto(string titulox, string tituloy, string tituloy2, DataSet ds, int valorX, int valorY, int valorY2, Chart Chart1)
            {

                Chart1.Width = 900;//ancho
                Chart1.Height = 600;//alto

                Color color = System.Drawing.ColorTranslator.FromHtml("#004A8E");
                Color color2 = System.Drawing.ColorTranslator.FromHtml("#CBECFC");

                //DEFINICION DEL COLOR Y ESTILO DEL FONDO DE TODA LA GRAFICA
                Chart1.BackColor = Color.FromArgb(211, 223, 240);
                Chart1.BackGradientStyle = GradientStyle.TopBottom;
                Chart1.BorderlineDashStyle = ChartDashStyle.Solid;
                Chart1.BorderSkin.SkinStyle = BorderSkinStyle.Emboss;


                //Chart1.ChartAreas["ChartArea1"].AxisY.Interval = 1000;//el intervalo del eje de las y...
                Chart1.ChartAreas["ChartArea1"].AxisX.Interval = 1;// el intervalo del eje de la x...
                Chart1.ChartAreas["ChartArea1"].BackColor = Color.FromArgb(64, 165, 191, 228);
                Chart1.ChartAreas["ChartArea1"].BackGradientStyle = GradientStyle.TopBottom;
                Chart1.ChartAreas["ChartArea1"].AxisX.MajorGrid.Enabled = false;// elimina las rayas en el eje de la Y

                Chart1.ChartAreas["ChartArea1"].AxisX.Title = titulox;
                Chart1.ChartAreas["ChartArea1"].AxisX.TitleFont = new Font("Calibri", 11, FontStyle.Bold);


                Chart1.ChartAreas["ChartArea1"].AxisY.Title = tituloy;
                Chart1.ChartAreas["ChartArea1"].AxisY.TitleFont = new Font("Calibri", 11, FontStyle.Bold);


                Chart1.ChartAreas["ChartArea1"].AxisY2.Title = tituloy2;
                Chart1.ChartAreas["ChartArea1"].AxisY2.TitleFont = new Font("Times New Roman", 12, FontStyle.Bold);

                Series ejeyx = new Series("ejeXY");
                ejeyx.ChartType = SeriesChartType.Column;
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    ejeyx.Points.AddXY(xValue: ds.Tables[0].Rows[i][valorX], yValue: ds.Tables[0].Rows[i][valorY]);
                }
                Chart1.Series.Add(ejeyx);

                Series ejeY2 = new Series("ejey2");
                ejeY2.ChartType = SeriesChartType.Spline;
                ejeY2.YAxisType = AxisType.Secondary;
                //Chart1.ChartAreas["ChartArea1"].AxisY2.Maximum = 100;
                Chart1.ChartAreas["ChartArea1"].AxisY2.Interval = 10;
                Chart1.ChartAreas["ChartArea1"].AxisY2.LabelStyle.Format = "0.00";

                if (ds.Tables[0].Rows[0][valorY2] != null) //condicion para que grafique en caso de que tenga valores
                {
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        ejeY2.Points.AddY(ds.Tables[0].Rows[i][valorY2]);
                    }


                    Chart1.Series.Add(ejeY2);
                }
                else
                {

                    Chart1.Series.Add(ejeY2);
                }

                Chart1.Series["ejeXY"].IsValueShownAsLabel = true;//Muestra los valores de la Serie1 las columnas
                Chart1.Series["ejeXY"].BorderDashStyle = ChartDashStyle.Solid;
                Chart1.Series["ejeXY"].BackGradientStyle = GradientStyle.DiagonalLeft;
                Chart1.Series["ejeXY"].MarkerSize = 12;// Set marker size
                Chart1.Series["ejeXY"].MarkerBorderColor = Color.MidnightBlue;
                Chart1.Series["ejeXY"].MarkerStyle = MarkerStyle.Diamond;// Set marker shape
                Chart1.Series["ejeXY"].MarkerColor = Color.Blue;
                Chart1.Series["ejeXY"].Color = color;



                Chart1.Series["ejey2"].IsValueShownAsLabel = true;//muestra los valores de la serie2  la linea curva
                Chart1.Series["ejey2"].BorderWidth = 1;
                Chart1.Series["ejey2"].MarkerSize = 12;// Setea el tamaño del punto
                Chart1.Series["ejey2"].MarkerStyle = MarkerStyle.Diamond;// Setea la forma del punto
                Chart1.Series["ejey2"].MarkerColor = Color.Red; ;
                Chart1.Series["ejey2"].Color = Color.Red;

                return Chart1;

            }

    SALUDOS DESDE ECUADOR!

    miércoles, 27 de febrero de 2013 15:28

Respuestas

  • Básicamente no puedes hacerlo porque estás usando un webcontrol y en asp.net mvc, por norma general, no se pueden usar.

    En este caso concreto del control Chart estás de suerte, porque si que se puede usar en asp.net mvc:

    Te dejo un enlace donde se comenta el uso del control Chart en ASP.NET MVC: http://www.4guysfromrolla.com/articles/092210-1.aspx

    Saludos! 


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis

    jueves, 28 de febrero de 2013 14:22