2018年1月25日 星期四

javascript confirm 美化版 for angularjs

透過 bower 安裝 angular-confirm-modal

修改 .js 以便支援 html 語法 (如 <br />)
<div class="modal-body"><span ng-if="data.htmltext" ng-bind-html="data.htmltext"></span><span ng-if="data.text">{{data.text}}</span></div>

$confirm({ htmltext: $sce.trustAsHtml(result.data + "<br><br>是否繼續?"), title: "偵測到相同刷卡資料,請確認是否重複輸入", ok: '是', cancel: '否' })
                            .then(function () {
                               ... // 按ok才執行
                            });

2018年1月17日 星期三

iis 7.5 中設定應用程式集區識別身分ApplicationPoolIdentity的NTFS權限方式

應用程式集區預設識別身分為 ApplicationPoolIdentity ,是動態產生的使用者,若要在安全性中添加使用者,輸入格式為
IIS AppPool\[應用程式集區名稱]

2018年1月16日 星期二

ag-grid 更新部分資料方法

$scope.gridOptions.api.redrawRows({ rowNodes: [$scope.focusNode ] }); // 更新畫面部分node
$scope.gridOptions.api.redrawRows(); // 更新畫面所有node
$scope.gridOptions.api.updateRowData({ remove: [$scope.selectData] }); // 刪除資料
$scope.gridOptions.api.updateRowData({ add: result.data, addIndex: 0 }); // 加入資料
$scope.focusNode.setData($scope.selectData); // 資料內容異動更新回node(若有用到cellRenderer則不會重新render,還是要搭配redrawRows)

$scope.gridOptions = {
onCellFocused: function (event) {             
                $scope.focusNode = $scope.gridOptions.api.getModel().rowsToDisplay[event.rowIndex];
            },

PS. setData 不會再次觸發 checkboxSelection 自訂函數,需搭配 redrawRows
PS. redrawRows 會造成 focus 跑掉,若要設定setFocusedCell 必須放在下面執行
var firstCol = $scope.gridOptions.columnApi.getAllDisplayedColumns()[1];
$scope.gridOptions.api.setFocusedCell($scope.focusNode.rowIndex, firstCol);

2018年1月9日 星期二

c# 6&7 新特色

1. 使用 valuetuple 結構定義具備多個屬性的資料 (需透過 nuget 安裝package)
2. 函數中可以定義函數
3. 字串常數中可以置入物件 (取代 string.format)
4. 屬性及方法支援 lambda
5. 使用 nameof 動態取得屬性名稱 (避免hardcode)

ex:
class test {
string FirstName;
string LastName;
string FullName => $"{FirstName}{LastName}"; // 3,4
void func1() {
 (int Height, int Weight) GetHeightAndWeight() //1,2
            {
                var returnVal = (Height: 172, Weight: 80); //1
                return returnVal;
            }
            var aa = GetHeightAndWeight();
aa.Weight++;
var bb=$"{nameof(FirstName)}:{FirstName}"; //3,5
}
}

使用 visual studio 開啟網站類型的專案需額外安裝 package
1. Microsoft.CodeDom.Providers.DotNetCompilerPlatform
2. Microsoft.Net.Compilers
並修改 web.config
compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.8.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:7 <= 原本是6就會只支援 c# 6

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

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