jQuery MiniUI 快速入门:CRUD(三)
CRUD包括:查询、编辑、新增、删除等数据操作。
效果图如下:
一:创建DataGrid
首先,我们创建一个数据表格:
<divid="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"
>
<divproperty="columns">
<divtype="checkcolumn"></div>
<divfield="loginname"width="120"headeralign="center"allowSort="true">员工帐号
<inputproperty="editor"class="mini-textbox"style="width:100%;"/>
</div>
<divfield="gender"width="100"renderer="onGenderRenderer"align="center"headeralign="center">性别
<inputproperty="editor"class="mini-combobox"style="width:100%;"data="Genders"/>
</div>
<divfield="age"width="100"allowSort="true">年龄
<inputproperty="editor"class="mini-spinner"minValue="0"maxValue="200"value="25"style="width:100%;"/>
</div>
<divfield="birthday"width="100"allowSort="true"dateFormat="yyyy-MM-dd">出生日期
<inputproperty="editor"class="mini-datepicker"style="width:100%;"/>
</div>
<divfield="remarks"width="120"headeralign="center"allowSort="true">备注
<inputproperty="editor"class="mini-textarea"style="width:100%;"minheight="80"/>
</div>
<divfield="createtime"width="100"headeralign="center"dateFormat="yyyy-MM-dd"allowSort="true">创建日期</div>
</div>
</div>
二:查询记录
functionsearch(){
varkey=document.getElementById("key").value;
grid.load({key:key});
}
使用load方法,可以传递更多、任意复杂的查询条件。后台通过Request["key"]方式获取和处理。
三:新增记录
functionaddRow(){
varnewRow={name:"NewRow"};
grid.addRow(newRow,0);
}
创建新记录时,可以初始化属性,比如newRow.age=20;
四:删除记录
functionremoveRow(){
varrows=grid.getSelecteds();
if(rows.length>0){
grid.removeRows(rows,true);
}
}
选择多条记录后,可以一次性删除。
五:编辑记录
用户可以点击单元格,进行编辑操作。
编辑器是在定义列的时候指定的,例如:
<divfield="loginname"width="120"headeralign="center"allowSort="true">员工帐号
<inputproperty="editor"class="mini-textbox"style="width:100%;"/>
</div>
这里的property声明,此textbox作为列的编辑器对象。
六:提交保存
在进行多次增加、删除、修改操作后,一次性提交保存到后台。
functionsaveData(){
vardata=grid.getChanges();
varjson=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对象获得查询条件后,调用业务层方法,返回结果。代码如下:
publicvoidSearchEmployees()
{
//查询条件
stringkey=Request["key"];
//分页
intpageIndex=Convert.ToInt32(Request["pageIndex"]);
intpageSize=Convert.ToInt32(Request["pageSize"]);
//字段排序
StringsortField=Request["sortField"];
StringsortOrder=Request["sortOrder"];
//业务层:数据库操作
Hashtableresult=newTestDB().SearchEmployees(key,pageIndex,pageSize,sortField,sortOrder);
//JSON
Stringjson=PluSoft.Utils.JSON.Encode(result);
Response.Write(json);
}
经过查询,获得数据后,将数据序列化成JSON字符串,然后用Response返回。
八:保存处理(服务端)
获得数据后,遍历记录,根据记录的状态位"_state",分别进行增加、删除、修改操作。代码如下:
publicvoidSaveChangedEmployees()
{
Stringjson=Request["data"];
ArrayListrows=(ArrayList)PluSoft.Utils.JSON.Decode(json);
foreach(Hashtablerowinrows)
{
//根据记录状态,进行不同的增加、删除、修改操作
Stringstate=row["_state"]!=null?row["_state"].ToString():"";
if(state=="added")
{
row["createtime"]=DateTime.Now;
newTestDB().InsertEmployee(row);
}
elseif(state=="removed"||state=="deleted")
{
Stringid=row["id"].ToString();
newTestDB().DeleteEmployee(id);
}
elseif(state=="modified")
{
newTestDB().UpdateEmployee(row);
}
}
}
参考示例:
CRUD
CRUD:单元格编辑器
CRUD:编辑表单
CRUD:弹出面板