页面
<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;
}
}