2013年12月29日 星期日

[HTML] 常用tag記錄

說明:紀錄一些常用的tag

1. <!DOCTYPE>:用來告訴browser使用的HTML版本。目前HTML版本有HTML 4、XHTML 1.0與HTML 5,其中XHTML需有結束tag,並有Strict、Tradtional與Frameset 3種格式。

2. <meta>:用來描述網頁資訊,通常放在<head></head>中,有name、content與http-equiv等屬性。

3. <html></html>:標記內容為HTML碼。

4. <head></head>:描述頁面的相關資訊。

5. <title></title>:定意標題列。

6. <div></div>:將element群組起來,會另起一行(block element),常用id與class屬性搭配CSS。

7. <span></span>:為<div></div>的inline版本,常用id與class屬性搭配CSS。

8. <h1></h1>~<h6></h6>:定義標題格式,<h1>最大,<h6>最小。

9.<p></p>:開新行(block element)。

10. <br />:斷行(empty element)。

11. <hr />:水平線(empty element)。

12. <sup></sup>:顯示上標內容。

13. <sub></sub>:顯示下標內容。

14. <del></del>:刪除線。

15. <ol></ol>:編號清單,通常搭配<li></li>,預設會縮排。

16. <ul></ul>:項目清單,通常搭配<li></li>,預設會縮排。
<ul><li></li>
       <li>
          <ul>
             <li>巢狀清單</li>
          </ul>
       </li>
</ul>。

17. <a href></a>:超連結。
<a href="#top">Back to top</a>

18. <table></table>:表格。

19. <tr></tr>:開新列。

20. <td></td>:儲存格的資料,常用colspan屬性,來跨越多少欄位,rowspan來跨越多少列。

21. <th></th>:表格標題,常用屬性scope定義標題為col或row。

22. <fieldset></fieldset>:群組表單elements。常搭配<legend></legend>。

23. <!-- -->:註解。


參考資料:
ritw.com/w3school/tags/tag_comment.html
http://www.w3schools.com/tags/

2013年12月27日 星期五

[Crystal Report] 設定公式欄位

說明:有時候需要user輸入數值到報表做運算,這時可使用Crystal Report內建的公式欄位來進行後續的運算處理。
例:

原價 100
折數 user輸入
售價 100*折數並四捨五入到整數位


做法:
1. 在xxx.rpt上的欄位總管->公式欄位按右鍵->新增->輸入公式名稱->使用編輯器(個人prefer)
2. 參考Crystal Report提供之運算子或函式視窗,輸入公式:
例:Round (CDbl ({Product.Price}) * {?Rate}, 0) //使用CDbl轉換為數字型別

也可使用If then Else等流程控制函式,例:
if CDbl ({Product.Price}) > 10000
 then Round ((CDbl ({Product.Price})*0.3, 0)
else if  CDbl ({Product.Price}) > 5000
 then Round ((CDbl ({Product.Price})*0.2, 0)
else Round ((CDbl ({Product.Price})*0.1), 0)

也可使用Mid函式來分割字串,例:
Mid ({Test.Item}, 1, 5)
Item為abcdefg=>公式參數顯示為abcdf


參考資料:
http://www.blueshop.com.tw/board/show.asp?subcde=BRD20060703143341LX6
http://blog.marksgroup.net/2010/03/crystal-reports-sorting-by-substring.html

2013年12月22日 星期日

[.NET] TimeZone與TimeZoneInfo類別使用記錄

說明:
1. TimeZone類別:用來擷取目前時區的資訊,或本地時間與UTC的互轉適用,但無法用TimeZone來表示本地時區以外的時區,或處理不同時區的轉換,因此,MSDN建議盡量用TimeZoneInfo來代替TimeZone。

例:
//取得目前電腦的時區
TimeZone tzLocal = TimeZone.CurrentTimeZone;
// 轉UTC
DateTime dtNow = DateTime.Now
DateTime dtUTC = tzLocal.ToUniversalTime(dtNow);


2. TimeZoneInfo類別:
主要可定義各地時區,並互相轉換,並可追溯到歷史日光節約時間。

例:
//定義各地時區物件
TimeZoneInfo tziEST = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
TimeZoneInfo tziTST = TimeZoneInfo.FindSystemTimeZoneById("Taipei Standard Time");
TimeZoneInfo tziUTC = TimeZoneInfo.FindSystemTimeZoneById("UTC");
TimeZoneInfo tziLocal = TimeZoneInfo.Local;

// Convert EST to TST by ConvertTime(datetime, source時區, destination時區)
DateTime dtNow = DateTime.Now;
DateTime dtTST = TimeZoneInfo.ConvertTime(dtNow, tziEST, tziTST);


參考資料:
http://msdn.microsoft.com/zh-tw/library/bb384268(v=vs.90).aspx
http://msdn.microsoft.com/zh-tw/library/system.timezone(v=vs.90).aspx
http://msdn.microsoft.com/zh-tw/library/system.timezoneinfo(v=vs.90).aspx
http://msdn.microsoft.com/zh-tw/library/vstudio/bb397767(v=vs.100).aspx
http://msdn.microsoft.com/zh-tw/library/vstudio/bb397765(v=vs.100).aspx

http://www.timeanddate.com/worldclock/city.html?n=805

2013年12月19日 星期四

[C#] 使用XmlDocument與XmlElement類別建立基本XML文件

說明:想產生一份XML文件,該怎麼做?
如:
<Document>
  <Master>
    <Field name="ID" value="12345">
  </Head>
  <Detail>
    <Field name="Name" value="SBC">
    <Field name="Sex" value="Male">
  </Detail>
</Document>


作法:
0. 需引用System.Xml命名空間;

1. 首先使用XmlDocument建構一XML object,例:
XmlDocument xdTest = new XmlDocument();

2. 因XML是由許多節點所組成,因此使用XmlDocument提供的CreateElement方法來建立節點,並assign給XmlElement object,例:
XmlElement xeDocument = xdTest.CreateElement("Document");

可使用<List>XmlElement xeDocument = new List<XmlElement>();
使用迴圈將節點加進去,例:
xeDocument.Add(xdTest.CreateElement("Field"));

xeDocument[index] = xdTest.CreateElement("Field");

3. 設定節點的屬性,如<Field name="ID" value="12345">,Field此節點下有兩個屬性(name與value),透過XmlElement的SetAttribute方法來設定屬性,例:
xeField.SetAttribute("name", "ID");
xeField.SetAttribute("value", "12345");

4. 最後使用XmlElement.AppendChild方法將子節點一層一層加回根節點與XmlDocument object,建立階層關係,例:
xeMaster.AppendcChild(xeField);
xdTest.AppendChild(xeDocument);

5. 接著使用XmldDocument的InnerXml屬性即可檢視產生之XML,例:
string strXml = xdTest.InnerXml;

6. 若要匯出文件,可使用XmlTextWriter類別,例:
XmlTextWriter writer = new XmlTextWriter(@"C:\Test.xml", encoding);
//設定是否縮排
writer.Formatting = Formatting.Indented;
xdTest.Save(writer);


參考資料:
http://www.wangqi.com/html/2007-01/9824.htm
http://www.dotblogs.com.tw/killysss/archive/2010/01/06/12853.aspx
http://www.dotblogs.com.tw/yc421206/archive/2010/08/10/17108.aspx

2013年12月17日 星期二

[Excel] 製作下拉式選單

說明:在Excel中建立下拉式選單供user選取,該怎麼做?


作法:

1. 需先開啟「開發人員」模式:
Excel 2010&2013:檔案->選項->自訂功能區->右側有「開發人員」打勾->確定
Excel 2007:Office按鈕->Excel選項->常用->勾選「在功能區顯示[開發人員]索引標籤」->確定

2. 在分頁上輸入下拉式選單要顯示的值->點選Tab上新增的開發人員->插入->點選下拉式選單圖示
3. 在分頁上點擊左鍵拉入下拉式選單->右鍵出現控制項格式->選擇控制->設定輸入範圍(圈選要顯示的值)->確定


參考資料:
http://blog.bestdaylong.com/2012/10/excel-2010.html
http://hy-chou.blogspot.tw/2013/01/excel.html

[Crystal Report] 參數欄位設定

說明:有時需取得Client端的變數值,該怎麼把值塞到報表上?


作法:
1. 在test.rpt檔上欄位總管->參數欄位->右鍵新增->輸入名稱與選取數值類型->拉到報表上
2. 在test.aspx.cs
     //建構一ReportDocument object
     private ReportDocument rdTest = new ReportDocument();
     string strRptName = Page.MapPath("test.rpt");
   
     //Load
     rdTest.Load(strRptName);
   
     //設定參數欄位的現值
     rdTest.SetParameterValue(string name, object val);
   
     //Bind
     CrystalReportViewer1.ReportSource = rdTest;
     CrystalReportViewer1.DataBind();


參考資料:
http://www.wretch.cc/blog/JohnDX/14586953

[.NET] .NET Reflector

說明:可用來反組譯.NET平台的dll或exe,目前最新版本為Reflector 8。


官網:http://www.red-gate.com/products/dotnet-development/reflector/


參考資料:
http://mitblog.pixnet.net/blog/post/34558377-.net-reflector-7

2013年12月4日 星期三

[C#] DateTime轉字串需顯示毫秒

說明:
使用DateTime.ToString("時間格式"),顯示到毫秒該怎麼做?


作法:
DateTime.ToString("yyyyMMddhhmmssfff"),fff 格式包含毫秒值中任何結尾的零。


參考資料:
http://msdn.microsoft.com/zh-tw/library/bb882581(v=vs.110).aspx

2013年12月3日 星期二

[C#] 透過SqlConnectionStringBuilder設定連線字串

說明:一般連線字串大多透過ConfigurationManager class
來讀取寫在web.config的連線字串,若沒web.config或想修改連線字串時,該如何做?
(ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;)


作法:
使用SqlConnectionStringBuilder class:
public static SqlConnectionStringBuilder connStr;
public DataAccess()
{
     connStr = new SqlConnectionStringBuilder();
     connStr.DataSource = "IP";
     connStr.InitialCatalog = "DB name";
     connStr.UserID = "UserID";
     connStr.Password = "Password";
}


參考資料:
http://stackoverflow.com/questions/16511244/how-to-create-connection-string-dynamically-in-c-sharp

[C#] StringBuilder語法紀錄

使用時機:
大量字串串接時,如迴圈中組字串。

1.建立StringBuilder object
StringBuilder sb = new StringBuilder();

2. append字串
sb.Append("test");

3. 移除字串
sb.Remove(int startIndex, int Length);
sb.Remove(sb.Length-1, 1);

4. 轉為string type
sb.ToString();


參考資料:
http://msdn.microsoft.com/zh-tw/library/2839d5h5(v=vs.110).aspx
http://msdn.microsoft.com/zh-tw/library/system.text.stringbuilder(v=vs.110).aspx

[ASP.NET] Enable/Disable GridView裡的LinkButton

說明:在GridView的樣板裡放了LinkButton,並想根據點選LinkButton後紀錄的Status來繫結LinkButton最新的狀態(Enable/Disable)。

例:
Process_No  Process_Name  Check-in       Check-out  
1                  test                LinkButton1  LinkButton2

若Process Check-in後,則LinkButton1 Disable LinkButton2 Enable

作法:
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            Button btnCheckIn = (Button)e.Row.FindControl("btnCheckIn");
            Button btnCheckOut = (Button)e.Row.FindControl("btnCheckOut");

            btnCheckIn.Enabled = false;
            btnCheckOut.Enabled = false;

            //取得繫結於GridView中各row的Check_Status值
            string strCheckStatus = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "Check_Status"));
            //Initial
            if (strCheckStatus == "0")
            {
                btnCheckIn.Enabled = true;
            }
            //Check in
            else if (strCheckStatus == "1")
            {
                btnCheckOut.Enabled = true;
            }
        }
}


參考來源:
http://stackoverflow.com/questions/17207271/enable-and-disable-link-button-on-gridview