@人人都有一个梦想,每天都在圆这个梦...... <-- 记录学习中点滴,一步步成长 ^o^ -->

C# 页面显示简易的统计图表(使用image控件实现)

最近需要把公司一个旧的ASP站点转换成 .net 的网站。

(Visual Studio 2005)

其中有页面的功能是 按照年龄,学历,性别等统计人员分布状况。

我开始用 数据集DataSetAge.xsd 配合”报表“(Report1.rdlc)项目

在 ReportViewer控件里实现的,显示出来的结果带有报表控件本身的导出、刷新等功能,

但是觉得不如像单元格里能更灵活的控制,所以还是参照了旧的ASP页面里的方法,

利用 image控件的部分显示(根据百分比与原始图片的宽度乘积的值设置image的宽度)来表示条状图。

 

浏览后的结果如下图所示:

旧ASP页面的代码如下,变量的定义与数值来源 部分代码已略去(在此代码中把条形图放到超链接内,可以跳转到以当前年龄段为

参数抓取的员工信息列表 页面),

 

代码
1 <Table Border=1 CellPadding=4 Cellspacing=1>
2 <TR Bgcolor=Yellow>
3 <TD align="Center">年齡分佈情形</TD>
4 <TD align="Center">人數分佈</TD>
5 <TD align="Center">百分比(100%)</TD>
6 </TR>
7 <TR>
8 <TD align="Center">50歲以上</TD>
9 <TD align="Center"><% =Y50 %></TD>
10 <TD><a href="查詢年齡.ASP?CT1=8"><Img src="../images/100.gif" Height=16 Width=<% =Per01*400 %> Align=TextTop>(<% =FormatNumber(Per01*100,2,True) %>)</a></TD>
11 </TR>
12 <TR>
13 <TD align="Center">46-50歲</TD>
14 <TD align="Center"><% =Y46 %></TD>
15 <TD><a href="查詢年齡.ASP?CT1=7"><Img src="../images/100.gif" Height=16 Width=<% =Per02*400 %> Align=TextTop>(<% =FormatNumber(Per02*100,2,True) %>)</a></TD>
16 </TR>
17 <TR>
18 <TD align="Center">41-45歲</TD>
19 <TD align="Center"><% =Y41 %></TD>
20 <TD><a href="查詢年齡.ASP?CT1=6"><Img src="../images/100.gif" Height=16 Width=<% =Per03*400 %> Align=TextTop>(<% =FormatNumber(Per03*100,2,True) %>)</a></TD>
21 </TR>
...
...

 

C#中以同样原理来实现  aspx中画出table来布局分组,

 

代码
1 <table width="780px" border="1">
2 <tr><td style="width:120px; background-color: #ffff66;">年資分佈情形</td><td style="width:80px; background-color: #ffff66;">人數分佈</td><td style="width: 80px; background-color: #ffff66">百分比(100%)</td></tr>
3 <tr><td style="height: 25px" >50歲以上</td><td style="height: 25px">
4 <asp:Label ID="lbl50plus" runat="server"></asp:Label></td>
5 <td ><asp:Image ID="Image50plus" runat="server" ImageUrl="~/humanadd/Image/100.jpg" />
6 <asp:Label ID="Label50plus" runat="server"></asp:Label> </td></tr>
7 <tr><td style="height: 25px">46-50歲</td><td >
8 <asp:Label ID="lbl46to50" runat="server"></asp:Label></td><td>
9 <asp:Image ID="Image46to50" runat="server" ImageUrl="~/humanadd/Image/100.jpg" />
10 <asp:Label ID="Label46to50" runat="server"></asp:Label></td></tr>
...
...

 cs 后台代码中从数据库中 获取相关数据,计算比重,结合原始图片(100%)宽度(本例图片的原始宽度为300px),

设置 image.width

下面代码同样省略里 从数据库获取相关数据,参数及 页面控件初始化的 代码

 

1 case "41-45": Image41to45.Width = (Unit)(percent * 300); Image41to45.Height = 15; lbl41to45.Text = cnt + ""; Label41to45.Text = "(" + (percent * 100) + "%)"; break;
2 case "46-50": Image46to50.Width = (Unit)(percent * 300); Image46to50.Height = 15; lbl46to50.Text = cnt + ""; Label46to50.Text = "(" + (percent * 100) + "%)"; break;
3 case "50+": Image50plus.Width = (Unit)(percent * 300); Image50plus.Height = 15; lbl50plus.Text = cnt + ""; Label50plus.Text = "(" + (percent * 100) + "%)"; break;

原理很简单,这里说的啰嗦了点。

posted @ 2010-12-22 15:33  有你的城市  阅读(2899)  评论(0编辑  收藏  举报