2015年11月29日 星期日

MS Chart Control 學習手記 - 圓餅圖

using System.Web.UI.DataVisualization.Charting;
using System.Drawing;

namespace Chart.AJAX
{
    public partial class Export_AJAX : System.Web.UI.Page
    {
        void CreateChart()
        {
            string[] xValues = { "0-20", "20-30", "30-40", "40-50", "50-60", "> 60", "unknow" };
            int[] yValues = {5, 18, 45, 17, 2, 1, 162 };

            //ChartAreas,Series,Legends 基本設定-------------------------------------------------
            Chart Chart1 = new Chart();
            Chart1.ChartAreas.Add("ChartArea1"); //圖表區域集合
            Chart1.Legends.Add("Legends1"); //圖例集合說明
            Chart1.Series.Add("Series1"); //數據序列集合

            //設定 Chart-------------------------------------------------------------------------
            Chart1.Width = 770;
            Chart1.Height = 400;
            Title title = new Title();
            title.Text = titleStr;
            title.Alignment = ContentAlignment.MiddleCenter;
            title.Font = new System.Drawing.Font("Trebuchet MS", 14F, FontStyle.Bold);
            Chart1.Titles.Add(title);

            //設定 ChartArea1--------------------------------------------------------------------
            Chart1.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = is3D;
            Chart1.ChartAreas[0].AxisX.Interval = 1;

            //設定 Legends-------------------------------------------------------------------------                
            //Chart1.Legends["Legends1"].DockedToChartArea = "ChartArea1"; //顯示在圖表內
            //Chart1.Legends["Legends1"].Docking = Docking.Bottom; //自訂顯示位置
            //背景色
            Chart1.Legends["Legends1"].BackColor = Color.FromArgb(235, 235, 235); 
            //斜線背景
            Chart1.Legends["Legends1"].BackHatchStyle = ChartHatchStyle.DarkDownwardDiagonal; 
            Chart1.Legends["Legends1"].BorderWidth = 1;
            Chart1.Legends["Legends1"].BorderColor = Color.FromArgb(200, 200, 200);

            //設定 Series1-----------------------------------------------------------------------
            Chart1.Series["Series1"].ChartType = SeriesChartType.Pie;
            //Chart1.Series["Series1"].ChartType = SeriesChartType.Doughnut;
            Chart1.Series["Series1"].Points.DataBindXY(xValues, yValues);
            Chart1.Series["Series1"].LegendText = "#VALX:    [ #PERCENT{P1} ]"; //X軸 + 百分比
            Chart1.Series["Series1"].Label = "#VALX\n#PERCENT{P1}"; //X軸 + 百分比
            //Chart1.Series["Series1"].LabelForeColor = Color.FromArgb(0, 90, 255); //字體顏色
            //字體設定
            Chart1.Series["Series1"].Font = new System.Drawing.Font("Trebuchet MS", 10, System.Drawing.FontStyle.Bold); 
            Chart1.Series["Series1"].Points.FindMaxByValue().LabelForeColor = Color.Red;
            //Chart1.Series["Series1"].Points.FindMaxByValue().Color = Color.Red;
            //Chart1.Series["Series1"].Points.FindMaxByValue()["Exploded"] = "true";
            Chart1.Series["Series1"].BorderColor = Color.FromArgb(255, 101, 101, 101);
            
            //Chart1.Series["Series1"]["DoughnutRadius"] = "80"; // ChartType為Doughnut時,Set Doughnut hole size
            //Chart1.Series["Series1"]["PieLabelStyle"] = "Inside"; //數值顯示在圓餅內
            Chart1.Series["Series1"]["PieLabelStyle"] = "Outside"; //數值顯示在圓餅外
            //Chart1.Series["Series1"]["PieLabelStyle"] = "Disabled"; //不顯示數值
            //設定圓餅效果,除 Default 外其他效果3D不適用
            Chart1.Series["Series1"]["PieDrawingStyle"] = "Default"; 
            //Chart1.Series["Series1"]["PieDrawingStyle"] = "SoftEdge";
            //Chart1.Series["Series1"]["PieDrawingStyle"] = "Concave";

            //Random rnd = new Random();  //亂數產生區塊顏色
            //foreach (DataPoint point in Chart1.Series["Series1"].Points)
            //{
            //    //pie 顏色
            //    point.Color = Color.FromArgb(150, rnd.Next(0, 255), rnd.Next(0, 255), rnd.Next(0, 255)); 
            //}
            Page.Controls.Add(Chart1);  
        }
    }
}

畫出來的圓餅圖就像這樣

2015年11月14日 星期六

DataSet、DataTable 及 DataView (ADO.NET)

DataSet、DataTable 及 DataView (ADO.NET)

.NET Framework 4
ADO.NET DataSet 是以常駐記憶體表示的資料,不論內含資料來源為何,都可提供一致的關聯式程式設計模型。 DataSet 表示一組完整的資料,包括內含、排序和約束資料的資料表,以及資料表間的關聯性。
DataSet 的使用方式有幾種,可以獨立或組合套用。 您可以:
也可以使用 XML Web Service 傳輸強型別的 DataSet DataSet 的設計非常適合使用 XML Web Service 來傳輸資料。 如需 XML Web Service 的概觀,請參閱 XML Web Services Overview 如需使用來自 XML Web Service 之 DataSet 的範例,請參閱 從 XML Web Service 使用 DataSet (ADO.NET)

建立 DataSet (ADO.NET)
說明建立 DataSet 執行個體的語法。
將 DataTable 加入至 DataSet (ADO.NET)
說明如何建立資料表和資料行,並將它們加入 DataSet
加入 DataRelation (ADO.NET)
說明如何在 DataSet 的資料表之間建立關聯性。
瀏覽 DataRelation (ADO.NET)
說明如何使用 DataSet 之資料表間的關聯性,傳回父子關係的子資料列或父資料列。
合併 DataSet 內容 (ADO.NET)
說明如何將一個 DataSetDataTable 或 DataRow 陣列的內容合併到另一個 DataSet
複製 DataSet 內容 (ADO.NET)
說明如何建立 DataSet 的複本,而此複本包含結構描述和指定的資料。
處理 DataSet 事件 (ADO.NET)
說明 DataSet 的事件和使用方式。
具型別資料集 (ADO.NET)
說明何謂具型別的 DataSet 以及它們的建立和使用方式。
DataTables (ADO.NET)
說明如何建立 DataTable、定義結構描述,以及管理資料。
DataTableReader (ADO.NET)
說明如何建立及使用 DataTableReader
DataView (ADO.NET)
說明如何建立並使用 DataViews,以及使用 DataView 事件。
在 DataSet 中使用 XML (ADO.NET)
說明 DataSet 如何將 XML 當成資料來源進行互動,包括將 DataSet 的內容載入和保存為 XML 資料。
從 XML Web Service 使用 DataSet (ADO.NET)
說明如何建立可透過 DataSet 傳輸資料的 XML Web Service。

ADO.NET 的新功能
簡介 ADO.NET 的新功能。
ADO.NET 概觀
提供 ADO.NET 的設計和元件的簡介。
從 DataAdapter 填入 DataSet (ADO.NET)
明如何自資料來源載入具有資料的 DataSet
以 DataAdapter 更新資料來源 (ADO.NET)
說明如何將 DataSet 中的資料變更解析回資料來源。
將現有的條件約束加入至 DataSet (ADO.NET)
說明如何將來自資料來源的主索引鍵資訊填入 DataSet

其他資源

2015年11月11日 星期三

索引在陣列的界限之外

我寫一個計算機的M+ 
Dim f As Integer = 0 
Dim q(f) As Single 
f = f + 1 
q(f) = Me.TextBox1.Text 


案1次 M+ 就 +1次f 

然後再用q(f)這個陣列存放數字 
但是一出現 索引在陣列的界限之外。 
請解釋或幫我解決哪裡出問題

------------------------------------------------------------------------------


Dim f As Integer = 0 
Dim q(f) As Single 

這是 q.length = 1 , q 的 ubound 值為 0 
f = f + 1 
用 q(1) 當然會超出範圍, 

再來, 你的 q(f) 應該是要一直累計下去 
所以你的 f, q() 應該是在 function 外宣告成全域的 

超出範圍的解決方式, 
1. 在 f = f + 1 之後, 加入一行 redim preserve q(f) 
2. q() 陣列改用 list 來做會更方便, 連 f 都用不到了

2015年11月10日 星期二

程式概念隨手筆記

資料抽象化
-從物件中排除細節,抽取共適的屬性及運作
封裝(資訊隱藏)
-即資訊隱藏的概念,將外界無須知道的屬性跟運作隱藏起來,避免不必要錯誤或不合理的運作產生
降低ripple-effect漣波效應
提高使用者易用性
增加程式的可維護性
繼承
子類別可以繼承父類別的屬性及運作,同時也可加入子類別自訂的屬性及運作
多型
意指相同的訊息給予不同的物件會引發不同的動作稱之

就程式而言:
利用父類別型態
接收子類別物件
做相同的動作
引發不同的行為
同名異式

較有彈性但速度較慢





垃圾回收機制
垃圾回收器有兩個基本的原理:

  1. 考慮某個物件在未來的程式執行中,將不會被存取。
  2. 向這些物件要求歸回記憶體。



費氏數列程式
int fib(int i)
{
if (i==0) return 0;
if (i==1) return 1;
return fib(i-1)+fib(i-2);
}

遞迴
int sum(int n)
{
if (n==0) return 0;
return sum(n)+sum(n-1);
}

九九乘法
for(int i=1; i<=9;i++)
{
     for(int j=1; j<=9; j++)
     {
          System.out.print(i*J)
     }
}

BubSort(int A[], int n)  //氣泡排序法之副程式
  {
    int i, j , k,t=1, Temp,sp;
    for (i=n-1; i>0; i--)
       {
        sp=1;
       for (j =0; j <=i; j++)
          if (A[j] > A[j+1])
             {  //兩數交換位置
               Temp = A[j];
               A[j] = A[j+1];
               A[j+1] = Temp;
               sp=0;
             }
             if (sp==1) break;
       }

  }