首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

Microsoft Chart 控制項資料綁定完全指南:從基礎到交叉表

     編輯:關於.NET

資料來源四大途徑

  1. 設計介面 Series.Points 手動添加
  2. 設計介面綁定資料源
  3. 後台代碼動態添加(Points.AddXY、AddY 等)
  4. 後台代碼設定資料源並 DataBind()(最常用)

本文聚焦途徑 3 與 4。

動態添加範例

double t;
for (t = 0; t <= (2.5 * Math.PI); t += Math.PI / 6)
{
    double ch1 = Math.Sin(t);
    double ch2 = Math.Sin(t - Math.PI / 2);
    Chart1.Series["Channel 1"].Points.AddXY(t, ch1);
    Chart1.Series["Channel 2"].Points.AddXY(t, ch2);
}

資料綁定支援類型與流程

實作 IEnumerable 的類型皆可綁定:DataView、DataReader、DataSet、Array、List、SqlCommand 等。

資料綁定流程圖

流程:判斷是否有分組資料 → 是則呼叫交叉表綁定 → 否則判斷 X/Y 軸綁定 → 呼叫 Points.DataBind / DataBindX / DataBindY → 最後處理多 Y 值綁定。

常規綁定三種寫法

資料表範例:ID, Name, RegionID, Sales

方式一:Chart 層級綁定

chart1.DataSource = myDv;
chart1.Series["Series1"].XValueMember = "Name";
chart1.Series["Series1"].YValueMembers = "Sales";
chart1.DataBind();

方式二:Points.DataBindXY

Chart1.Series["Series1"].Points.DataBindXY(myReader, "Name", myReader, "Sales");

方式三:Points.DataBind(含屬性格式化)

Chart1.Series["Series1"].Points.DataBind(myReader, "Name", "Sales", "");

Label/Tooltip 綁定差異:

  • 方式一/二:Series["S1"].Label = "#VAL"; 再呼叫 DataBind/DataBindXY
  • 方式三:DataBind(..., "Label=ID,ToolTip=RegionID") 以格式化字串指定

Label/Tooltip 綁定效果圖

交叉表綁定

DataBindCrossTable 可依資料動態生成多條 Series。

範例資料:Name, Year, Sales, Commissions

方法簽章:

DataBindCrossTable(IEnumerable dataSource,
    string seriesGroupByField,  // 分組欄位(如 Name)
    string xField,              // X 軸欄位(如 Year)
    string yFields,             // Y 軸欄位,多欄位用逗號分隔
    string otherFields,         // Label/Tooltip/Url 等屬性
    PointSortOrder sortingOrder // 可選,排序方式
)

統計每位用戶年度銷售曲線

Chart1.DataBindCrossTable(myReader, "Name", "Year", "Sales", "Label=Commissions{C}");

依用戶分組的年度銷售曲線

統計每年各用戶銷售曲線

Chart1.DataBindCrossTable(myReader, "Year", "Name", "Sales", "Label=Commissions{C}");

只需交換前兩參數即可反轉分組視角。

常見陷阱與提示

  • 多 Y 值綁定報錯 → 設定 Series.YValuesPerPoint 為需保存的值數量。
  • DataTable 綁定時 otherFields 格式化較難,一次通常只能綁定一個欄位;標籤加文字可用 Field{xxxx#xxxx} 語法(# 會被替換)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved