2017年7月19日 星期三

[C#] dataset 是唯獨 不能修改問題

今天維護一個有點年紀的程式

此程式是用datareader 讀去資料後放到data set

我需要進一步修改data set 卻報出唯獨不能修改…orz

查了一下才發現使用data Reader來讀資料load 進 dataset還會是唯獨狀態

因此我必須改動狀態才能進行更新.

所以要再加上類似下述

datatable.columns["name"].ReadOnly = false;


---

參考 : https://goo.gl/53dtqt

2017年5月8日 星期一

[C#] 日期時間

 

以下是特定時間與當下時間差做比較,並以小時表示

var timeDiff = new TimeSpan(BeginTime.Ticks - DateTime.Now.Ticks).TotalHours;

2017年4月25日 星期二

[C#] 日期比較

 

DateTime.Compare(date1, date2) > 0) 表示 date1 > date2

DateTime.Compare(date1, date2) == 0) 表示 date1 == date2

DateTime.Compare(date1, date2) < 0) 表示 date1 < date2

2017年4月17日 星期一

[mvc] 加入多國語系


簡易流程 : 簡單說就是利用cookie紀錄瀏覽器的預設語系,然後在server端切換對應的語系檔(.resource)
1.在controller 加入切換語系的action

public ActionResult ChangeLang(String langCode, String bakCtrl, String bakAct)
      {
          //use Cookies save lang code
          HttpCookie LangCookie = Request.Cookies["lang"];
 
          if (LangCookie == null)
          {
              LangCookie = new HttpCookie("lang");
          }
 
          LangCookie.Value = langCode;
          LangCookie.Expires.AddDays(1);
          Response.Cookies.Add(LangCookie);
 
          if (String.IsNullOrEmpty(bakCtrl) || String.IsNullOrEmpty(bakAct))
          {
              return RedirectToAction("Index""Home");
          }
          else
          {
              return RedirectToAction(bakAct, bakCtrl);
          }
      }
 
 
2.在html加入切換語系
<a href="@Url.Action("ChangeLang""Home"new { langCode = "zh-TW" })">中文</a>

3.在Global.asax 設定cookie語言的資訊

protected void Application_BeginRequest(Object sender, EventArgs e)
      {
          HttpCookie myLang = Request.Cookies["lang"];
          if (myLang != null)
          {
              System.Threading.Thread.CurrentThread.CurrentCulture =
                  new System.Globalization.CultureInfo(myLang.Value);
              System.Threading.Thread.CurrentThread.CurrentUICulture =
                  new System.Globalization.CultureInfo(myLang.Value);
          }
      }
 

4.新增resource資源檔 增加欄位即可
參考 :  https://goo.gl/5gh9gw
編輯多國語系套件 : http://resxmanager.codeplex.com/

2017年3月28日 星期二

[Error][EF6] 使用Notracking 合併選項傳回物件時…

 

error : 使用Notracking 合併選項傳回物件時…不包含物件時呼叫Load

2017-03-28_104819

解 : 跟以前一樣,都不是本身的問題,是table 跟 table 之間關連的問題,記得使用metadata 加入 jsonignore 來忽略循環select的問題

2017年3月14日 星期二

[Filter] OnActionExecuting


如果需要在進Action前執行特定行為,如過濾

就需要額外新增一個class並繼承ActionFilterAttribute

裡面有四個基本功能

Action,Result執行前後

範例 :
//public override void OnActionExecuting(ActionExecutingContext filterContext)       
//{       
//    string currentDomain = filterContext.HttpContext.Request.Headers["HOST"];       
//    List<string> domains = WebConfigurationManager.AppSettings["AllowDomain"].ToString().Split(',').ToList();       
//    if (!domains.Any(i => i.Contains(currentDomain)))       
//    {      
//        throw new Exception("未允許的網域");       
//    }       
//}

2017年3月2日 星期四

{JS} IE11 遇到Get回傳參數是中文變成亂碼

 

感謝隔壁伙伴的相助,才能這麼快就解決這個問題

當IE遇到Get回傳參數是中文會變成亂碼, 也就是回傳一堆菱形,

這在chrome, firfox 沒問題。

 

因此請先利用js都先編碼encode後再傳送處理

ex. 範例來源

var uri = "https://w3schools.com/my test.asp?name=ståle&car=saab";
var res = encodeURIComponent(uri);

// 編碼後 : https%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dst%C3%A5le%26car%3Dsaab