2013年5月23日 星期四

轉換指定字串為字首大寫

問題:
轉換指定字串為字首大寫

解決方案:

TextInfo textInfo = new CultureInfo("en-US",false).TextInfo;
string propertyName = textInfo.ToTitleCase(Value);

討論:


有關字首大寫的方法很多,但不管使用哪種,建議擴充 string ,可以將 TextInfo 再包一層到 string 擴充方法中,

例如:
public static string ToTitleCase(this string value)
{
 if (value != null)
{
 StringBuilder sb = new StringBuilder();
 for (int i = 0; i < value.Length; i++)
{
  if (i == 0)
 {
   sb.Append(char.ToUpper(value[0]));
 }
 else
 {
  sb.Append(char.ToLower(value[i]));
 }
}
return sb.ToString();
}
else
{
  throw new ArgumentNullException();
 }

2013年5月14日 星期二

中華民國日期格式轉型



問題:
中華民國日期格式轉型

解決方案:

CultureInfo TwCultureInfo = new CultureInfo("zh-TW");
TwCultureInfo.DateTimeFormat.Calendar = TwCultureInfo.OptionalCalendars[1];

string now = DateTime.Now.ToString("中華民國yyyMMdd HH:mm:ss", TwCultureInfo);
Console.WriteLine(now);

DateTime result;
DateTime.TryParse(now, TwCultureInfo, DateTimeStyles.None, out result);
Console.Write(result);

OutPut:



參考文獻:

日期格式轉型儲存到資料庫



問題:
日期格式轉型儲存到資料庫

解決方法:

DateTime now = DateTime.Now;
now.ToString("yyyy/MM/dd HH:mm:ss");

討論:
要特別注意大小寫,MM 為月份,mm 為分鐘,HH 24小時制,hh 12小時制。

2013年5月9日 星期四

空字串與 NULL 日期比對。



問題:
空字串與 NULL  日期比對。

SELECT
    CASE
        WHEN
            DATEDIFF(D,NULL,'2012/12/01') > 365
        THEN
            'NULL 異常'
        WHEN   
            DATEDIFF(D,'','2012/12/01') > 365
        THEN   
            '空字串異常'
        ELSE
            '正常'
    END

OUT PUT:
空字串異常

解決方法:

條件式濾除 NULL 和 空字串。

討論:
           DATEDIFF 函式中應注意事項,如果 startdate enddate 其中之一只有時間部分,而且另一個項目只有日期部分,則遺漏的時間和日期部分都會設定為預設值。遺漏日期部分的值就會設定為預設值:1900-01-01[1]

參考文獻:
1.       DATEDIFF (Transact-SQL)


2013年5月7日 星期二

如何在 ItemDataBound 事件取得 DataSource。



問題:

如何在 ItemDataBound 事件取得 DataSource

解決方案:

範例程式:
// GridView
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
DataRowView row = (DataRowView)e.Row.DataItem;
}

// Repeater
protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
DataRowView row = (DataRowView)e.Item.DataItem;
}

// ListView
protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e)
{
ListViewDataItem dataItem = (ListViewDataItem)e.Item;
DataRowView row = (DataRowView)dataItem.DataItem;
}

討論:

使用 DataItem 屬性存取 GridViewRow 物件所繫結之基礎資料物件的屬性。DataItem 屬性只有在 GridView 控制項的 RowDataBound 事件當時或是之後才可以取得[1]

參考文獻:
2.       料繫結 - Repeater