公司ERP系统,需求一份数据库大小增长月报表,每月1号发送邮件至订阅者的邮箱,下图右下角的Chart是动态产生,有关渐变图片,可以参考这篇另外由于磁盘空间太大,加上当前的ERP存储量小,为了显示图例效果,Insus.NET使用千分比。
分享右下角图表代码:
<asp:GridView ID="GridViewErpDbGrowthReport" runat="server" CellPadding="3" CellSpacing="0" Width="97%" GridLines="Both" HeaderStyle-BorderWidth="1" HeaderStyle-BorderStyle="Solid" HeaderStyle-Height="25" HeaderStyle-BackColor="#efebde" RowStyle-BorderWidth="1" RowStyle-BorderStyle="Solid" RowStyle-Height="20" OnRowDataBound="GridViewErpDbGrowthReport_RowDataBound"></asp:GridView>
Units:KB.<br />
Disk space total size: 556GB.
OnRowDataBound="GridViewErpDbGrowthReport_RowDataBound" 事件:
1 protected void GridViewErpDbGrowthReport_RowDataBound(object sender, GridViewRowEventArgs e)
2 {
3 if (e.Row.RowType == DataControlRowType.DataRow)
4 {
5 if (e.Row.RowIndex == 0)
6 {
7 for (int i = 0; i < e.Row.Cells.Count; i++)
8 {
9 e.Row.Cells[i].Attributes.Add("Style", "text-align:center;");
10 }
11 }
12
13 if (e.Row.RowIndex == 1)
14 {
15 e.Row.Height = 100;
16
17 for (int i = 0; i < e.Row.Cells.Count; i++)
18 {
19 if (i == 0)
20 {
21 e.Row.Cells[i].Attributes.Add("Style", "vertical-align:bottom; text-align:right;");
22 e.Row.Cells[i].Text = e.Row.Cells[i].Text + " <span style='text-align:right;vertical-align:bottom;'><IMG src='Image/bar.gif' width='10' height='100' ></span>";
23 }
24 else
25 {
26 e.Row.Cells[i].Attributes.Add("Style", "text-align:center; vertical-align:bottom;");
27 string dec = (Convert.ToDecimal(e.Row.Cells[i].Text) * 1000).ToString ();
28 e.Row.Cells[i].Text = dec.Substring(0,dec.Length-2) + "‰<br/><IMG src='vertical-bar.gif' width='30' height='" + dec + "' > ";
29 }
30 }
31 }
32 }
33 }
定制好图片的高度,然后是每个月份的大小与磁盘存储大小比得到图片的高度。
由于GridView的每一列是动态产生的,列名不定因素,只能在OnRowDataBound事件重写列值输出。