# 單檔(M) ### 要繼承IApiController.==M== ## Controller ```csharp= public override MasterClass getMaster() { //SQL只要跟查詢有關的都要有1=1 是因為模組一經寫好了 //模組有一部分是根據1=1來去做修改 //SQL必須加入1=1條件 StringBuilder l_SQL = new StringBuilder(); l_SQL.Append(@" Select M.* From DEMOMI M Where 1=1 order by m.id "); return new MasterClass() { tableName = "DEMOMI", //程式第一次載入時是否有資料 isNoDataFirstLoad = false, //SQL轉成大寫 sQL = l_SQL.ToString().ToUpper(), //string[1] 後面1就寫1 2就寫2 keyField = new string[1] { "ID" }, //不可空白欄位 notNullField = new string[2] { "NAME", "SEX" }, //不可編輯,但可新增欄位 noEditButInsertField = new string[0] { }, //不可編輯欄位 noEditField = new string[1] { "ID" }, //查詢條件預設值 searchData = new SearchClass() { NAME = "", SEX = "" } }; } ``` * tableName 表名稱 * l_SQL.Append(sql語法); * keyField 主鍵 * notNullField 不可NULL * string[1] 後面1就寫1 2就寫2 ## cshtml **擁有兩種表單:Master From 和 Serach From** ### Master From(是新增跟修改的頁面) ```htmlmixed= @section panelMaster { <form name="masterForm" class="form-horizontal" role="form"> <div class="form-group"> <div class="control-title col-xs-6 col-sm-2 col-md-2 col-lg-2"> <label for="txtID" class="control-label" ng-class="isRequiredClass('ID')"> <span class="error-block"> <i class="glyphicon glyphicon-warning-sign error-icon" ng-show="masterForm.txtID.$error.required" data-toggle="tooltip" data-placement="right" data-title="【編號】不可空白!"></i> </span> 編號 </label> </div> <div class="col-xs-6 col-sm-4 col-md-4 col-lg-4"> <input name="txtID" id="txtID" type="text" class="form-control " ng-model="editRow.ID" ng-required="isRequired('ID')" ng-disabled="isReadOnly('ID')"> </div> </div> <div class="form-group"> <div class="control-title col-xs-6 col-sm-2 col-md-2 col-lg-2"> <label for="txtNAME" class="control-label" ng-class="isRequiredClass('NAME')"> <span class="error-block"> <i class="glyphicon glyphicon-warning-sign error-icon" ng-show="masterForm.txtNAME.$error.required" data-toggle="tooltip" data-placement="right" data-title="【姓名】不可空白!"></i> </span> 姓名 </label> </div> <div class="col-xs-6 col-sm-4 col-md-4 col-lg-4"> <input name="txtNAME" id="txtNAME" type="text" class="form-control " ng-model="editRow.NAME" ng-required="isRequired('NAME')" ng-disabled="isReadOnly('NAME')" max-length="10"> </div> </div> </form> } ``` * MasterFrom ng-model => editRow.參數 ### Serach From(查詢頁面) :::danger 查詢模組 ::: ```htmlmixed= <form name="searchForm" class="form-horizontal" role="form"> <div class="form-group"> <label for="txtID_S" class="col-xs-4 control-label">編號</label> <div class="col-xs-4"> <select name="txtID_S" class="form-control" ng-model="searchData.ID" ng-options=" m.DESC as m.DESC for m in opData.MEB_ID"> <option value=""></option> </select> </div> </div> </form> ``` * SearchFrom ng-model => searchData.參數 ## JS ```javascript= @section Scripts { <script type="text/javascript"> var myApp = angular.module('myApp', ['ngGrid', 'ksijs']); //controller myApp.controller('MCtrl', ['$scope', '$window', 'ksiEnum', 'ksiLib', '$compile', '$filter', function ($scope, $window, Enum, myLib, $compile, $filter) { //程式代碼 $scope.progNo = 'M'; //--初始化initializing ----取得程式初始設定,放入Master物件(傳入參數)//Resource.action([parameters], [success], [error]) myLib.init($scope, myLib); //定義Grid欄位內容(放在後面init) //在這裡宣告需要顯示的欄位 $scope.gridMaster.columnDefs = []; $scope.gridMaster.columnDefs.push({ field: 'ID', displayName: '代碼', width: '100px', pinnable: true }); $scope.gridMaster.columnDefs.push({ field: 'NAME', displayName: '名稱', width: '300px', pinnable: true }); $scope.gridMaster.columnDefs.push({ field: 'SEX', displayName: '性別 ', width: '100px', pinnable: true }); $scope.gridMaster.columnDefs.push({ field: 'DATE1', displayName: '起始日期', width: '300px', pinnable: true }); $scope.gridMaster.columnDefs.push({ field: 'DATE2', displayName: '結束日期', width: '300px', pinnable: true }); ``` * $scope.progNo = '==M=='; M是放要連動的Controller的名字 * $scope.gridMaster.columnDefs.push 是寫入想要呈現的欄位 ###### tags: `實習筆記`