Monday, December 22, 2014

[ADO.NET] 彙總函數練習

練習 ADO.NET 彙總函數的使用 ~~
namespace AggDeno
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        DataTable dtAgg = new DataTable();
        DataTable dtDataTable = new DataTable();
        private void Form1_Load(object sender, EventArgs e)
        {
            dtFill();
        }

        private void dtFill()
        {
            dtAgg.Columns.Add("Alias", typeof(string));
            dtAgg.Columns.Add("Data",typeof(decimal));
            dtAgg.Rows.Add("EG-2A",369);
            dtAgg.Rows.Add("EG-2A",344);
            dtAgg.Rows.Add("IA1-1X", 322.88);
            dtAgg.Rows.Add("IA1-1X", 0.335);
            dtAgg.Rows.Add("IQ1-4X", 0.225);
            dtAgg.Rows.Add("IQ1-4X", 3.6);
            dtAgg.Rows.Add("IQ1-4X", 222.5);
            dgvData.DataSource = dtAgg;

            // Clone() 複製原 DataTable Schema
            // Copy()  複製原 DataTable Schema 和 Data
            dtDataTable = dtAgg.Clone();
            dgvDataTable.DataSource = dtDataTable;
        }

        private void btnADO_Click(object sender, EventArgs e)
        {
            dtDataTable.Rows.Clear();

            // 利用 ToTable() 找出 Alias 唯一值
            DataTable dtLoop = dtAgg.DefaultView.ToTable(true, "Alias");

            string filter = string.Empty;
            string Alias = string.Empty;
            foreach (DataRow dr in dtLoop.Rows)
            {
                Alias = dr["Alias"].ToString();

                DataRow drNew = dtDataTable.NewRow();
                drNew["Alias"] = Alias;
                filter = string.Format("Alias = '{0}'", Alias);
                drNew["Data"] = dtAgg.Compute("AVG(Data)", filter);
                dtDataTable.Rows.Add(drNew);
            }
        }

        private void btnDataTableLINQ_Click(object sender, EventArgs e)
        {
            dtDataTable.Rows.Clear();

            IEnumerable<string> loop = dtAgg.AsEnumerable().Select(Row => Row.Field<string>("Alias")).Distinct();

            foreach (string Alias in loop)
            {
                decimal avg = dtAgg.AsEnumerable().Where(dr => dr.Field<string>("Alias") == Alias).Average(dr => dr.Field<decimal>("Data"));

                DataRow drNew = dtDataTable.NewRow();
                drNew["Alias"] = Alias;
                drNew["Data"] = avg;
                dtDataTable.Rows.Add(drNew);
            }
        }

        private void btnLINQ_Click(object sender, EventArgs e)
        {

            var result = dtAgg.AsEnumerable().GroupBy(datarow => datarow.Field<string>("Alias")).Select(g => new { Alias = g.Key , AVG = g.Average(a => a.Field<decimal>("Data"))}).ToList();

            dgvLINQ.DataSource = result;
        }
    }
}
[C#] 彙總函數練習

Thursday, December 18, 2014

2014 老山胞回巢

2014 年走設計路線

2014 老山胞回巢-1

2014 老山胞回巢-2

Wednesday, December 17, 2014

貼紙

研討會中按讚的贈品 - 小光貼紙

貼紙

Tuesday, December 16, 2014

[Azure] VM - 建立 Windows 虛擬機器

在 Windows Azure 上快速建立出一個 Windows VM 來使用,記錄參與 2014 Wndows Azure 開發訓練營和閱讀 MVA 上影片的筆記。

新增

[Azure] VM - 建立 Windows 虛擬機器-1

計算 => 虛擬機器 => 快速建立,設定相關資訊;假如是從 "組件庫" 來建立的話,可以設定進階選項。
  • DNS 名稱:VM 對外的 DNS 名稱,必須是 Global Only
  • 影像:欲建立的作業系統
  • 大小:老師建議最少要到開標準 A2 以上,標準 A2 以下進入 VM 會非常緩慢
  • 使用者名稱:無法輸入 user、guest、、admin 和 administrator 這類常見的名稱,此為利用遠端桌面(RDP)連進 VM 的帳號
  • 密碼:必須滿足複雜密碼原則
  • 區域:東亞,機房位於香港,
  • 訂閱用戶:付款依據
[Azure] VM - 建立 Windows 虛擬機器-2

Monday, December 15, 2014

[C#] WebBrowser

整理上課筆記

一直覺的 WebBrowser 控件好像沒有甚麼實際用途,上課時老師有提到,實務上可以把 Web 上的最新消息,透過 WebBrowser 來顯示,這樣就不用設計 WinForm 版本介面
namespace WebBrowserDemo
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // Form 上每個控件的 Anchor 設定
            lblURL.Anchor = AnchorStyles.Left | AnchorStyles.Top;
            txtURL.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right;
            btnGO.Anchor = AnchorStyles.Top | AnchorStyles.Right;
            webBrowser1.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right;

            // 顯示該電腦 IE 首頁並顯示在 txtURL 內
            webBrowser1.GoHome();
        }

        private void btnGO_Click(object sender, EventArgs e)
        {
            runURL();
        }

        private void txtURL_KeyUp(object sender, KeyEventArgs e)
        {
            // 使用者輸入完後,直接按 Entry 執行
            if (e.KeyCode == Keys.Enter) runURL();
        }

        private void runURL()
        {
            webBrowser1.Navigate(txtURL.Text);
        }

        private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            // 使用者操作 WebBrowser 內連結時,必須把點擊的 URL 傳回 txtURL 內顯示
            string url = webBrowser1.Url.ToString();
            if (string.IsNullOrEmpty(url)) return;
            txtURL.Text = url;
        }
    }
}

執行程式會顯示 IE 首頁

[C#] WebBrowser-1

利用 Google 搜尋 Blog,可以看見 txtURL 會顯示現在的網址

[C#] WebBrowser-2
[C#] WebBrowser-3