JSFiddle - React, Tailwind, and code Playground
by wllai2001
HTML
<div ng-app>
<div ng-controller="GridViewCtrl">
<!--設定搜尋參考物件-->
姓名搜尋:
<input type="text" value="" ng-model="search.name" />
<!--直覺式物件操作-->
<input type="button" value="清除" ng-click="search.name=''">
<br/>
學號搜尋:
<input type="text" value="" ng-model="search.sid" />
<input type="button" value="清除" ng-click="search.sid=''">
<br/>
<br/>
<span>新增學生資料</span>
<form ng-submit="insert(newone)">
<table rules="all">
<tr>
<th>姓名</th>
<th>學號</th>
<th>性別</th>
<th></th>
</tr>
<tr>
<td>
<input type="text" value="" ng-model="newone.name"/>
</td>
<td>
<input type="text" value="" ng-model="newone.sid"/>
</td>
<td>
<input type="text" value="" ng-model="newone.sex"/>
</td>
<td>
<input type="submit" value="新增"/>
</td>
</tr>
</table>
</form>
<br/>
<table rules="all">
<tr>
<th>姓名</th>
<th>學號</th>
<th>性別</th>
<th></th>
</tr>
<!--類似ASP.Net Repeatter用法-->
<tr ng-repeat="row in ViewData.data | filter:search" >
<td ng-hide="row.editing">{{row.name}}</td>
<td ng-hide="row.editing">{{row.sid}}</td>
<td ng-hide="row.editing">{{row.sex}}</td>
<td...
CSS
table,#showdata{border:1px #ccc solid;width:400px;}
td, th {padding:5px;text-align:center;}
td input[type=text] {width:70px;}
JavaScript
/*AngularJS 試做GridView CRUD 20131002*/
function GridViewCtrl($scope) {
/*模擬資料庫資料來源*/
$scope.ViewData = {
data: [
{ name: '王同學', sid: 'A9790211', sex:'男' },
{ name: '林同學', sid: 'A9790212', sex:'女' },
{ name: '陳同學', sid: 'A9790213', sex:'女' },
{ name: '黃同學', sid: 'A9790214', sex:'男' },
]
};
/*進入編輯模式*/
$scope.edit = function(row){
row.editing = true;
$scope.temprow = angular.copy(row);
}
/*編輯模式確認按鈕*/
$scope.save = function(row){
/*可在此處呼叫AJAX,寫回後端WebService*/
/*AJAX do_update(row)*/
delete row.editing;
}
/*編輯模式取消按鈕*/
$scope.cancel = function(row){
/*angular.copy(來源,目標)*/
angular.copy($scope.temprow,row);
delete row.editing;
}
/*刪除按鈕*/
$scope.delete = function(row){
/*可在此處呼叫AJAX,寫回後端WebService*/
/*AJAX do_delete(row)*/
$scope.ViewData.data.splice($scope.ViewData.data.indexOf(row),1);
}
/*新增按鈕*/
$scope.insert = function(newone){
if(newone.name.length > 0 && newone.sid.length > 0 && newone.sex.length > 0){
/*可在此處呼叫AJAX,寫回後端WebService*/
/*AJAX do_insert(newone)*/ this.ViewData.data.push({name:newone.name,sid:newone.sid,sex:newone.sex});
newone.name = '';
newone.sid = '';
newone.sex = '';
}else{
alert('新增失敗,資料輸入不完全');
}
}
};