jQuery MiniUI 开发教程 CRUD之:单元格编辑(一)

本文介绍了一个使用MiniUI实现的单元格编辑功能,包括创建编辑器、执行编辑操作及服务端处理等内容。通过示例代码展示了如何实现单元格的增删改等功能,并提供了完整的保存和同步数据到服务器的方法。
CRUD之:单元格编辑
[img]http://www.miniui.com/docs/api/images/celledit.png[/img]
参考示例:[url=http://www.miniui.com/demo/datagrid/celledit.html]单元格编辑[/url]

[b]一:创建单元格编辑器[/b]
<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>
设置allowCellEdit和allowCellSelect后,表格为单元格编辑模式。

[b]二:编辑操作[/b]
增加行:
function addRow() {
var newRow = { name: "New Row" };
grid.addRow(newRow, 0);
}
删除行:
function removeRow() {
var rows = grid.getSelecteds();
if (rows.length > 0) {
grid.removeRows(rows, true);
}
}
保存数据:
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);
}
});
}

[b]三:服务端处理[/b]
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);
}
}
}
### 实现 MiniUI 单元格内按钮功能 在 MiniUI 中,可以通过 `Grid` 控件实现单元格内的按钮功能。具体来说,可以利用 `renderer` 属性来自定义单元格的内容,从而实现在单元格中嵌入按钮的效果。 以下是详细的说明和代码示例: #### 自定义单元格内容 MiniUIGrid 支持通过 `columns` 配置项中的 `renderer` 方法自定义单元格渲染逻辑[^1]。此方法允许开发者灵活地向单元格中插入 HTML 元素,例如按钮、链接或其他交互组件。 #### 示例代码 以下是个完整的示例,展示了如何在 MiniUI 的表格单元格中添加按钮并绑定点击事件: ```html <!DOCTYPE html> <html lang="zh-CN"> <head> <!-- jquery js --> <script src="../jquery.js" type="text/javascript"></script> <!-- MiniUI CSS 和 JS --> <link href="../themes/default/miniui.css" rel="stylesheet" type="text/css"/> <script src="../miniui.js" type="text/javascript"></script> </head> <body> <div id="datagrid1" class="mini-datagrid" style="width:80%;height:300px;" url="../data.json" showHeader="true" allowResize="false" multiSelect="true" pageSize="10" totalProperty="total" dataProperty="rows"> <div property="columns"> <div type="indexcolumn">序号</div> <div field="name" headerAlign="center" align="left">名称</div> <div field="action" width="120" renderer="onActionRenderer" headerAlign="center" align="center">操作</div> </div> </div> <script type="text/javascript"> mini.parse(); function onActionRenderer(e) { var record = e.record; return '<button onclick="editRecord(' + record.id + ')">编辑</button> ' + '<button onclick="deleteRecord(' + record.id + ')">删除</button>'; } function editRecord(id) { alert("正在编辑记录:" + id); } function deleteRecord(id) { if (confirm("确认删除记录:" + id)) { // 调用服务端删除逻辑... alert("已删除记录:" + id); } } </script> </body> </html> ``` #### 代码解析 1. **HTML 结构**: 创建了个 `mini-datagrid` 表格,并配置了两列:列为普通字段 (`name`),另列为带有按钮的操作列 (`action`)。 2. **Renderer 函数**: 利用了 `renderer="onActionRenderer"` 来指定自定义渲染函数,在该函数中返回包含按钮的 HTML 字符串。 3. **按钮事件处理**: 按钮绑定了 JavaScript 函数 `editRecord` 和 `deleteRecord`,用于执行相应的业务逻辑。 #### 注意事项 - 如果需要动态加载数据,则应确保服务器返回的数据结构与前端致。 - 对于复杂的交互场景,建议结合 AJAX 请求和服务端接口完成更复杂的功能[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值