2012年11月18日 星期日

GridView To PDF

嚴格的說,不是將GridView資料轉出到PDF,應該是說將網頁資料轉出到PDF,包含GridView,goole資料普遍都是利用免費的 iTextSharp Library達成目的,安裝方法不外乎就是下載dll檔,掛載到VS專案,程式表頭把相關參考加到Using。
使用過程遇到的案例參考:

1.這邊有詳細操作教學 http://danatang.blog.ntu.edu.tw/


2.中文問題,也可以參考 http://renjin.blogspot.tw/2009/01/using-chinese-fonts-in-itextsharp.html


2012年11月14日 星期三

Install AJAX Control Tool Kit at VS 2010 Express

1.At VS2010 -> Tool -> Extend Management 



2.Search NuGet Package Manager and Install.
   After install,restart VS2010

3.Open NuGet Package Manager 

4.Search AJAX and Install


Done

2012年11月5日 星期一

將文字轉出條碼

參考來源:
http://www.techrepublic.com/blog/howdoi/how-do-i-generate-barcodes-using-c/173

1.建立將文字轉條碼的類別

public static Bitmap CreateBarcode(string sData)
    {
        //create Bitmap物件
        Bitmap barcode = new Bitmap(1, 1);

        //設定條碼字型
        Font threeOfNine = new Font("Free 3 of 9", 60, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);

        //create圖形物件、載入Barcode字型
        Graphics graphics = Graphics.FromImage(barcode);

        //設定轉出條碼後的寬度、高度及字型
        SizeF datasize = graphics.MeasureString(sData, threeOfNine);

        //now we base the bitmap's size off of this data
        barcode = new Bitmap(barcode, datasize.ToSize());

        //依據更新後的bitmap刷新圖型物件
        graphics = Graphics.FromImage(barcode);

        //設定圖型物件背景顏色
        graphics.Clear(Color.White);

        //設定圖型物件的關聯文字的呈現模式為 SingleBitPerPixel
        //graphics.TextRenderingHint = TextRenderingHint.SingleBitPerPixel;
        graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixel;
       
        //將字串資料放入圖型物件
        graphics.DrawString(sData, threeOfNine, new SolidBrush(Color.Black), 0, 0);

        //圖型物件刷新
        graphics.Flush();

        //釋放物件
        threeOfNine.Dispose();
        graphics.Dispose();

        //回傳
        return barcode;
    }

2.畫面放一個Button、TextBox,Button事件裡面

        Bitmap barcode = HClass1.CreateBarcode("*" + TextBox1.Text + "*");
        barcode.Save(@"c:\barcode.gif", System.Drawing.Imaging.ImageFormat.Gif);

2012年10月16日 星期二

利用 ROW_NUMBER 函數產生序號欄位


需求:
找出2012年,每筆採購資料的第1次採購日期


說明:
採購單TABLE 為 PURTH
TH001 單別
TH002 單號
TH003 序號
TH004 品號
TH014 進貨日


範例:
SELECT *
FROM
(
select TH001,TH002,TH003,TH004,
ROW_NUMBER() OVER(PARTITION BY TH004 ORDER BY TH014) AS RN
FROM PURTH
WHERE
SUBSTRING(TH014,1,4) LIKE '2012'
) B

WHERE RN='1'

解析:
1.ROW_NUMBER() 裡面的 PARTITION BY TH004,表示以品號為切割區段,不同品號即重新排序
2.加上 ORDER BY TH014 ,表示以日期排序
3.綜合以上,即依進貨日、將相同品號排序、產生序號
4.包成另一TABLE以後,將裡面的序號 1(WHERE RN='1' ) SELECT出來

2012年9月23日 星期日

在TextBox按Enter時呼叫特定Button


在TextBox的KeyDown事件裡面判斷到Enter時呼叫Button

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
  if (e.KeyCode == Keys.Enter)
  {
    button1.Focus();
    button1_Click(sender,e);
  }
}

小時鐘






Paragraph




2012年9月8日 星期六

Cookie應用

功能說明:
1.畫面上放一個TextBox、CheckBox、Button
2.第一次登入時若勾選CheckBox且TextBox的值正確,將TextBox的值寫入Cookie
3.登入時檢查Cookie使否有值,若有、自動將Cookie值複製到TextBox,且將CheckBox打勾
4.登入時若將CheckBox勾選取消、會連同Cookie資料清除
5.按下Button後檢查Textbox是否正確,若正確、Button.Text="OKOK"
6.若TextBox值不正確、Cookie資料清除

程式範例:

 protected void Page_Load(object sender, EventArgs e)
 {
      if(!IsPostBack)
      {
           //取cookie資料
           if (Request.Cookies["txt1"] != null)
          {
              CheckBox1.Checked = true;
              TextBox2.Text = (Request.Cookies["txt1"].Value.ToString());
          }
       }
}

protected void Button1_Click(object sender, EventArgs e)
{
    //狀況1:若已勾記住帳號,重新寫入cookie
   if (CheckBox1.Checked)
   {
       if (TextBox2.Text == "aa")
       {
            Button1.Text = "OKOK!";

            //將正確資料寫入cookie
            HttpCookie cookie = new HttpCookie("txt1");
            cookie.Value = TextBox2.Text;
            cookie.Expires = DateTime.Now.AddYears(1);
            Response.Cookies.Add(cookie);
        }
    }
         
    //狀況2:取消勾選cookie且cookie若有資料須清空
    //因為不能直接刪除cookie,只要讓cookie過期變成失效,系統會自行刪除cookie
    if(!CheckBox1.Checked)
    {
        if (Request.Cookies["txt1"] != null)
        {
            HttpCookie cookie = new HttpCookie("txt1");
            cookie.Expires = DateTime.Now.AddDays(-1);
            Response.Cookies.Add(cookie);
        }
        if (TextBox2.Text == "aa")
            Button1.Text = "OKOK!";
    }
}