Monday, 21 July 2014

Creating graph from multiple columns and printing Graph with Div Tag

No comments
/*For Graph*/

 protected void Page_Load(object sender, EventArgs e)
    { 
               DataTable dt = GetData();
                LoadChartData(dt);
     }

private void LoadChartData(DataTable initialDataSource)
    {
        for (int i = 1; i < initialDataSource.Columns.Count; i++)
        {
            Series series = new Series();
            foreach (DataRow dr in initialDataSource.Rows)
            {
                if (!(dr[i] is DBNull))
                {
                    int y = Convert.ToInt32(dr[i]);
                    series.Points.AddXY(dr["Data"].ToString(), y);
                }
            }
            Chart1.Series.Add(series);
        }
    }

 private DataTable GetData()
    {
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Example"].ToString());
        SqlCommand cmd = new SqlCommand("select * from xyz where id=@id ", con);
        cmd.Parameters.AddWithValue("@id", Request.QueryString["id"]);
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        DataTable dt1 = new DataTable();
        da.Fill(dt1);

        SqlCommand cmd1 = new SqlCommand("SP", con);
        cmd1.CommandType = CommandType.StoredProcedure;
        cmd1.Parameters.AddWithValue("@Name", Request.QueryString["NM"]);
        SqlDataAdapter da1 = new SqlDataAdapter(cmd1);
        DataTable dts = new DataTable();
        da1.Fill(dts);

        DataRow dr = dt1.Rows[0];
        DataTable dt = new DataTable();
        dt.Columns.Add("Data");
        dt.Columns.Add("Value1");
        DataRow dr1 = dt.NewRow();
        dr1["Data"] = dr["Choice1"];
        lblr1.Text = dr["Choice1"].ToString();
        dr1["Value1"] = 12;
        dt.Rows.Add(dr1);

        DataRow dr2 = dt.NewRow();
        dr2["Data"] = dr["Choice2"];
        lblr2.Text = dr["Choice2"].ToString();
        dr2["Value1"] = 20;
      
        dt.Rows.Add(dr2);
        DataRow dr3 = dt.NewRow();
        dr3["Data"] = dr["Choice3"];
        lblr3.Text = dr["Choice3"].ToString();
        dr3["Value1"] = 30;
        dt.Rows.Add(dr3);

      return dt;
    }

To print this graph and Div Tag

 protected void print(object sender, EventArgs e)
   {

        /* To Print DIV */

        Response.ContentType = "application/pdf";
        Response.AddHeader("content-disposition", "attachment;filename=Panel.pdf");
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        StringWriter stringWriter = new StringWriter();
        HtmlTextWriter htmlTextWriter = new HtmlTextWriter(stringWriter);

        divprint.RenderControl(htmlTextWriter);
        StringReader stringReader = new StringReader(stringWriter.ToString());
        Document Doc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
        HTMLWorker htmlparser = new HTMLWorker(Doc);
        PdfWriter.GetInstance(Doc, Response.OutputStream);
        Doc.Open();
        using (MemoryStream stream = new MemoryStream())  /*To Print Graph Using iTextSharp*/
        {
            Chart1.SaveImage(stream, ChartImageFormat.Png);
            iTextSharp.text.Image chartImage = iTextSharp.text.Image.GetInstance(stream.GetBuffer());
            chartImage.ScalePercent(75f);
            chartImage.Alignment = iTextSharp.text.Element.ALIGN_CENTER;
            Doc.Add(chartImage);
        }
        htmlparser.Parse(stringReader);
        Doc.Close();
        Response.Write(Doc);
        Response.End();
}