同一页面显示GridView和柱状图

页面

<div>
            <asp:Label ID="Label1" runat="server" Text="年月"></asp:Label>
            <asp:TextBox ID="txtNy" runat="server" Width="82px"></asp:TextBox>
            <asp:Button ID="btnOk" runat="server" OnClick="btnOk_Click" Text="确定" Width="69px" /><br />
            <asp:GridView ID="GridView1" runat="server" Height="164px"
      Width="508px">
            </asp:GridView>
            <br />
            <br />
            <iframe src="" width="800px" height="400px" scrolling="no" frameborder="no" border="0"  id="iframe1" runat="server" ></iframe>
        </div>

 

 ConnectionStringSettings connStr = WebConfigurationManager.ConnectionStrings["jxzz"];
    protected void Page_Load(object sender, EventArgs e)
    {     
        if (!IsPostBack)
        {
            DateTime dt = DateTime.Now;
            string ny = dt.ToString("yyyyMM");
            txtNy.Text = ny;
            iframe1.Attributes["src"] = "jxzyImg.aspx?ny=" + ny;
            bind(ny);
        }

    }
 

    private void bind(string ny)
    {
        ConnOra conn = new ConnOra(connStr.ToString());
        string sql = "select zylb,sum(jc) from zygzlpj where ny='" + ny + "' group by zylb";
        DataSet ds = conn.GetDS(sql);
        this.GridView1.DataSource = ds;
        this.GridView1.DataBind();
    }

    protected void btnOk_Click(object sender, EventArgs e)
    {
        string ny = txtNy.Text;
        iframe1.Attributes["src"] = "jxzyImg.aspx?ny=" + ny;
        bind(ny);
    }

 

jxzyImg.aspx.cs

 

public partial class jxzyImg : System.Web.UI.Page
{
    ConnectionStringSettings connStr = WebConfigurationManager.ConnectionStrings["jxzz"];
    protected void Page_Load(object sender, EventArgs e)
    {
        string ny = Request["ny"].ToString();
        Draw_Map(ny);
        

    }

    //定议bar图颜色
    protected void Draw_Map(string ny)
    {
        ConnOra conn = new ConnOra(connStr.ToString());
        string strSql = "select zylb,sum(jc) jc from zygzlpj where ny='"+ny+"' group by zylb";
        DataSet ds = conn.GetDS(strSql);
        string[] zylb = new string[5];
        int[] jc = new int[5];
        if (ds.Tables[0].Rows.Count > 0)
        {
            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
            {
                zylb[i] = Convert.ToString(ds.Tables[0].Rows[i]["zylb"]);
                jc[i] = Convert.ToInt32(ds.Tables[0].Rows[i]["jc"]);
            }
        }
        ds.Clear();
        ds.Dispose();


        decimal dw = 12.5m;
        DataSet ds1 = conn.GetDS("select max(jc) jc from (select zylb,sum(jc) jc from  zygzlpj where ny='"+ny+"' group by zylb)");
        if (Convert.ToInt32(ds1.Tables[0].Rows[0][0]) > 20)
        {
            dw = Math.Round((decimal)250 / Convert.ToInt32(ds1.Tables[0].Rows[0][0]), 2);//计算最大值是否超过背图的高,得出刻度
        }
        ds1.Clear();
        ds1.Dispose();
        conn.Close();

        Bitmap bm = new Bitmap(600, 320);//创建一个长度为600,宽带为250的Bitmap实例
        Graphics g = Graphics.FromImage(bm);//由此Bitmap实例创建Graphic实例
        g.Clear(Color.Snow);//用Snow色彩为背景色填充此绘画图面
        g.DrawString(ny+"井下作业工作量对比图", new Font("黑体", 16), Brushes.Black, new Point(120, 5));
        //实现bar图


        int iBarWidth = 100;


        for (int i = 0; i < jc.Length; i++)
        {

            g.DrawRectangle(Pens.Black, (i * iBarWidth) + 50, 250 - Convert.ToInt32((jc[i] * dw)) + 50, 30, Convert.ToInt32((jc[i] * dw))); //画矩形图

            g.FillRectangle(new SolidBrush(GetColor(i)), (i * iBarWidth) + 50, 250 - Convert.ToInt32((jc[i] * dw)) + 50, 30, Convert.ToInt32((jc[i] * dw))); //填充颜色

            g.DrawString(jc[i].ToString(), new Font("宋体", 12), Brushes.Black, (i * iBarWidth) + 50, 250 - Convert.ToInt32((jc[i] * dw)) + 35);//写数量
            g.DrawString(zylb[i].ToString(), new Font("宋体", 12), Brushes.Black, (i * iBarWidth) + 30, 302);//写月份


        }
        bm.Save(Response.OutputStream, ImageFormat.Gif);
        Response.End();
    }
    private Color GetColor(int itmeIndex)
    {
        Color myColor;
        myColor = Color.Gray;

        switch (itmeIndex)
        {
            case 0:
                myColor = Color.Green;
                break;
            case 1:
                myColor = Color.Red;
                break;
            case 2:
                myColor = Color.Yellow;
                break;
            case 3:
                myColor = Color.Blue;
                break;


            case 4:
                myColor = Color.Orange;
                break;
            case 5:
                myColor = Color.Aqua;
                break;
            case 6:
                myColor = Color.SkyBlue;
                break;
            case 7:
                myColor = Color.DeepPink;
                break;

            case 8:
                myColor = Color.Pink;
                break;
            case 9:
                myColor = Color.Brown;
                break;
            case 10:
                myColor = Color.GreenYellow;
                break;
            case 11:
                myColor = Color.BurlyWood;
                break;
            case 12:
                myColor = Color.Chartreuse;
                break;
            default:
                myColor = Color.Gray;
                break;
        }

        return myColor;

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值