[ASP.net] 關於ASP.net Chart- Column圖改變 Points 上標 Label 文字樣式

2013-06-26

上一篇說到關於Radar 圖的一些有的沒的,這一篇分享一下碰到Column Chart 上面老闆的要求

首先一樣先拉入一張Chart 並且設定為Column圖

2013-06-25_183633

設定一些Series 其中我建立的範例LegendText 為 能力、智力、速度三種

2013-06-25_183849

其中的Label 為  #VAL
2013-06-26_125422
看一下ASPX Code :

<asp:Chart ID="Chart1" runat="server">
    <Legends>
    <asp:Legend Alignment="Center" Docking="Bottom" Name="Legend1">
    </asp:Legend>
</Legends>
    <Series>
        <asp:Series Name="Series1" LegendText="能力" Label="#VAL"></asp:Series>
        <asp:Series ChartArea="ChartArea1" LegendText="智力" Name="Series2"  Label="#VAL">
        </asp:Series>
        <asp:Series ChartArea="ChartArea1" LegendText="速度" Name="Series3"  Label="#VAL">
        </asp:Series>
    </Series>
    <ChartAreas>
        <asp:ChartArea Name="ChartArea1"></asp:ChartArea>
    </ChartAreas>
</asp:Chart>

再來就是C# Code 這邊匯入資料

C#:

DataTable dt = new DataTable();
 
dt.Columns.Add("英雄名稱");
 
dt.Columns.Add("能力");
dt.Columns.Add("智力");
dt.Columns.Add("速度");
Chart1.Series[0].XValueMember = "英雄名稱";
Chart1.Series[0].YValueMembers = "能力";
Chart1.Series[1].YValueMembers = "智力";
Chart1.Series[2].YValueMembers = "速度";
 
dt.Rows.Add(new object[] { "浩克", 5, 5, 0 });
dt.Rows.Add(new object[] { "鋼鐵人", 5, 5, 2 });
dt.Rows.Add(new object[] { "美國隊長", 5, 1, 4 });
Chart1.DataSource = dt.DefaultView;
 
 
Chart1.DataBind();

這時候來看一下結果..

ChartImg

這時候老闆需求是 因為高分的5 希望是紅色顯示其上標數字 , 並且 0 分的就是不要出現其上標數字

查了一下做法,因為這是必須獨立去設定每一個分數上面的上標文字

所以在 Databind 之後加上這段Code.

C#:

foreach (var series in Chart1.Series)
{
    foreach (var point in series.Points)
    {
        if (point.YValues[0] == 0)
        {
            point.Label = string.Empty;
        }
        else if (point.YValues[0] >= 5)
        {
            point.LabelForeColor = Color.Red;
        }
 
    }
}

結果:

ChartImg (1)

一些很簡單的小技巧,給需要用到的人自己也筆記一下


當麻許的超技八 2014 | Donma Hsu Design.