如下:
一:建立DataGrid
首先,我們建立一個資料表格:
<div id="datagrid1" class="mini-datagrid" style="width:800px;height:280px;"
url="../data/AjaxService.aspx?method=SearchEmployees" idField="id"
allowResize="true" pageSize="20"
allowCellEdit="true" allowCellSelect="true" multiSelect="true">
<div property="columns">
<div type="checkcolumn"></div>
<div field="loginname" width="120" headerAlign="center" allowSort="true">員工帳號
<input property="editor" class="mini-textbox" style="width:100%;"/>
</div>
<div field="gender" width="100" renderer="onGenderRenderer" align="center" headerAlign="center">性別
<input property="editor" class="mini-combobox" style="width:100%;" data="Genders"/>
</div>
<div field="age" width="100" allowSort="true" >年齡
<input property="editor" class="mini-spinner" minValue="0" maxValue="200" value="25" style="width:100%;"/>
</div>
<div field="birthday" width="100" allowSort="true" dateFormat="yyyy-MM-dd">出生日期
<input property="editor" class="mini-datepicker" style="width:100%;"/>
</div>
<div field="remarks" width="120" headerAlign="center" allowSort="true">備忘
<input property="editor" class="mini-textarea" style="width:100%;" minHeight="80"/>
</div>
<div field="createtime" width="100" headerAlign="center" dateFormat="yyyy-MM-dd" allowSort="true">建立日期</div>
</div>
</div>
二:查詢記錄
function search() {
var key = document.getElementById("key").value;
grid.load({ key: key });
}
使用load方法,可以傳遞更多、任意複雜的查詢條件。後台通過Request["key"]方式擷取和處理。
三:新增記錄
function addRow() {
var newRow = { name: "New Row" };
grid.addRow(newRow, 0);
}
建立新記錄時,可以初始化屬性,比如newRow.age = 20;
四:刪除記錄
function removeRow() {
var rows = grid.getSelecteds();
if (rows.length > 0) {
grid.removeRows(rows, true);
}
}
選擇多條記錄後,可以一次性刪除。
五:編輯記錄
使用者可以點擊儲存格,進行編輯操作。
編輯器是在定義列的時候指定的,例如:
<div field="loginname" width="120" headerAlign="center" allowSort="true">員工帳號
<input property="editor" class="mini-textbox" style="width:100%;"/>
</div>
這裡的property聲明,此textbox作為列的編輯器對象。
五:提交儲存
在進行多次增加、刪除、修改操作後,一次性提交儲存到後台。
function saveData() {
var data = grid.getChanges();
var json = mini.encode(data);
grid.loading("儲存中,請稍後......");
$.ajax({
url: "../data/AjaxService.aspx?method=SaveChangedEmployees",
data: { data: json },
type: "post",
success: function (text) {
grid.reload();
},
error: function (jqXHR, textStatus, errorThrown) {
alert(jqXHR.responseText);
}
});
}
DataGrid的getChanges方法,可以直接擷取增加、刪除、修改的記錄資料。 資料狀態位"_state"為"added"/"removed"/"modified"。
六:查詢處理(服務端)
當grid調用load方法時,會將查詢條件發送到服務端。服務端使用Request對象獲得查詢條件後,調用業務層方法,返回結果。代碼如下:
public void SearchEmployees()
{
//查詢條件
string key = Request["key"];
//分頁
int pageIndex = Convert.ToInt32(Request["pageIndex"]);
int pageSize = Convert.ToInt32(Request["pageSize"]);
//欄位排序
String sortField = Request["sortField"];
String sortOrder = Request["sortOrder"];
//業務層:資料庫操作
Hashtable result = new TestDB().SearchEmployees(key, pageIndex, pageSize, sortField, sortOrder);
//JSON
String json = PluSoft.Utils.JSON.Encode(result);
Response.Write(json);
}
經過查詢,獲得資料後,將資料序列化成JSON字串,然後用Response返回。
六:儲存處理(服務端)
獲得資料後,遍曆記錄,根據記錄的狀態位"_state",分別進行增加、刪除、修改操作。代碼如下:
public void SaveChangedEmployees()
{
String json = Request["data"];
ArrayList rows = (ArrayList)PluSoft.Utils.JSON.Decode(json);
foreach (Hashtable row in rows)
{
//根據選項組,進行不同的增加、刪除、修改操作
String state = row["_state"] != null ? row["_state"].ToString() : "";
if(state == "added")
{
row["createtime"] = DateTime.Now;
new TestDB().InsertEmployee(row);
}
else if (state == "removed" || state == "deleted")
{
String id = row["id"].ToString();
new TestDB().DeleteEmployee(id);
}
else if (state == "modified")
{
new TestDB().UpdateEmployee(row);
}
}
}
參考樣本:
CRUD
CRUD:儲存格編輯器
CRUD:編輯表單
CRUD:彈出面板