2013年12月24日 星期二

keyup 事件無法在輸入中文選完字後就觸發

改用 input 事件

使用範例:
$("#進貨驗收table_filter input").bind("input", function () {
            alert($(this).val());
        });      

2013年12月19日 星期四

javascript 的數值運算會產生多餘小數

8.72 * 3.0=26.1600000000004
解法: 假設最多保留小數兩位則 Math.round(8.72 * 3.0*100)/100=26.16

2013年10月24日 星期四

將 table 中多筆資料的某些欄位合併變成一個字串

select stuff((select  ',' + c1+c2 from table1 for xml path('')),1,1,'')

利用 for xml path('') 合併
利用 stuff('xxx',1,1,'') 去除第一個逗號

2013年10月22日 星期二

安裝 sql server express 2012 後卻找不到組態管理員 (windows 8)

To access SQL Server Configuration Manager Using Windows 8
Because SQL Server Configuration Manager is a snap-in for the Microsoft Management Console program and not a stand-alone program, SQL Server Configuration Manager not does not appear as an application when running Windows 8. To open SQL Server Configuration Manager, in the Search charm, under Apps, type SQLServerManager11.msc (for SQL Server 2012) or SQLServerManager10.msc for (SQL Server 2008), and then press Enter.

2013年10月9日 星期三

如何將父類別物件轉型成子類別物件

無法直接轉型,必須在父類別撰寫產生子類別物件的函數,範例如下
public virtual T Clone() where T : 調整單DisplayViewModel
        {
            var obj = (T)Activator.CreateInstance(typeof(T));
            obj.調整單號 = this.調整單號;
            obj.調整日期 = this.調整日期;
            obj.說明 = this.說明;
            obj.調整人員 = this.調整人員;
            obj.建檔人員 = this.建檔人員;
            obj.建檔時間 = this.建檔時間;
            return obj;
        }


使用範例
調整單ViewModel viewmodel = this.DisplayViewModel.Clone<調整單ViewModel>();

2013年9月26日 星期四

取得或設定 checkbox 值

取值 : $('#123').prop('checked')
設定 : $('#123').prop('checked',true)

何時使用 prop() 存取屬性?
存取屬性 checked、selected、disabled 使用 prop(),其他屬性則用attr()

2013年8月1日 星期四

jQuery Validation Plugin 加入驗證規則

範例:
$.validator.addMethod("檢查選擇課程或活動", function (value, element) {
            return $('[name=課程任務]').val() != "" || $('[name=活動任務]').val() != "";
        }, "請選擇課程或活動");

2013年6月14日 星期五

不同area 存在相同名稱的 controller 造成無法呼叫action

錯誤訊息如下:
找到多個與名稱為 'Product' 的控制器相符的型別。如果服務此要求 ('{controller}/{action}/{id}') 的路由沒有指定命名空間以搜尋符合該要求的控制器,就會發生這個情況。在這種情況下,請呼叫可接受 'namespaces' 參數的 'MapRoute' 方法的多載來註冊此路由。

解法:
RouteConfig.RegisterRoutes 指定namespace
routes.MapRoute(
                "Default",
                "{controller}/{action}/{id}",
                new { controller = "Home", action = "Index", id = UrlParameter.Optional },
                new[] { "erpweb.Controllers" }
            );

2013年6月11日 星期二

如何讓server 產生的空白字元傳換成網頁上的空白

將空白字元取代成 \xA0

說明:
nbsp in html corresponds to "\xA0" as a C# string, so use this instead of spaces, when HTML encoded it will produce nbsp

2013年5月14日 星期二

查看造成 sqlserver.exe cpu 負載持續飆到9x%

Select * from sys.dm_exec_requests a CROSS APPLY sys.dm_exec_sql_text(a.sql_handle) AS st
尋找 blocking_session_id 非0的並執行 kill 將其刪除即可恢復正常
需根據最後一個欄位分析造成此現象的原因,無法解決則要避免有機會執行到此指令

2013年5月3日 星期五

table 如何指定欄位寬度

table 須設定 css: table-layout: fixed 以便可以正確設定欄位寬度,且能加快顯示速度 (不需要等待資料全部載入才顯示)

英文字強制斷行
style="width:300px;word-break: break-all"
英文字不斷行 (欄寬會增加)
style="width:300px;word-break: normal"

若要讓文字超出欄寬時不要轉折而是截斷並出現...則再加上
overflow: hidden; white-space: nowrap; text-overflow:ellipsis;

轉為datatables 的參數設定如下
====
"bAutoWidth": false,
"bLengthChange": false,

2013年4月9日 星期二

2013年3月16日 星期六

epplus save 失敗

只要應用程式集區執行身份的權限不夠大就會被限制呼叫 .save() 時可以用的暫存空間(用來製作壓縮檔案), 資料太多超過這個限制造成.save() 失敗拋出exception
解法是另外建立帳號且是administrators 群組,然後把應用程式集區的識別身份改為這個帳號

2013年2月21日 星期四

datatables取得點選的tr並讀取td內容


範例如下

var table = $('#table').dataTable();
        $("#table tbody").delegate("tr", "click", function () {
            var nNodes = table.fnGetNodes(); //nNodes[?] 回傳第?個tr
            var 選擇列 = table.fnGetPosition(this);
            if (選擇列 != null) {
                var aData = table.fnGetData(選擇列); //aData[?] 就是第?個td內容
            }
        });

hyperlink 執行action 完成後顯示訊息


範例如下

view
====
$('#列印條碼link').click(function () {
                    $.post(this.href, {}, function (result) {
                        alert(result.Message);
                    });
                    return false;
                });

controller
====
return Json(new{Message=message});

取得當前controller和area名稱

areaname: (string)Request.RequestContext.RouteData.DataTokens["area"] ?? "Root"
controllername: (string)Request.RequestContext.RouteData.Values["controller"]
actionname: (string)Request.RequestContext.RouteData.Values["action"]

enum 學習心得


字串 => enum : ([enum名稱])Enum.Parse(typeof([enum名稱]), "[字串]", true);

值 => enum : ([enum名稱])Enum.ToObject(typeof([enum名稱]), [值]);

enum => 值 : Convert.ToInt32([enum])

enum => 字串 : [enum].ToString()

值 => 字串 : (([enum名稱]) [值]).ToString()

加入描述屬性產生對應集合
enum 規格 { [Description("<90cm")] _89cm = 1, [Description("90~120cm")] _90120cm, [Description(">120cm")] _121cm }
var list = Enum.GetValues(typeof(規格)).Cast<規格>().Select(a => new { value = (int)a, text = a.GetAttributeOfType<DescriptionAttribute>()?.Description ?? a.ToString() }).ToList();

列出每週日、一、...
Enum.GetValues(typeof(DayOfWeek)).Cast<DayOfWeek>().Select(a => new { value = (int)a, text = new CultureInfo("zh-tw").DateTimeFormat.GetShortestDayName(a) }).ToList();

2013年2月20日 星期三

datatables 如何做到橫向卷軸

1. table 外面包div
2. div 的寬度等於table可見寬度
3. 轉為datatables 的參數設定如下
sScrollX : 100%
sScrollXInner :設定實際table 的寬度

2013年1月4日 星期五

sql server 撈出不重複的資料(依據某個欄位排序後找出第一筆)


select * from (SELECT *,ROW_NUMBER() OVER (PARTITION BY [不重複欄位] ORDER BY [排序欄位]) AS rn FROM [表格]) a where rn=1

Entity Framework 建立新物件並儲存後馬上取得關聯資料

使用 CreateProxy 建立物件,不要直接 new var newmodel = _contextXXX.CreateProxy<yyy>(); ... _contextXXX.yyy.Add(newmodel); await _contextXXX.SaveC...