(1)准备工作
1)定义pojo
package sample.dataset;
import java.util.Date;
public class Product {
private long id;
private String name;
private double price;
private Date gmtCreate;
private Date gmtModifieDate;
<span style="white-space:pre"> </span>....
}
2)定义DataType对应Pojo
此处是在全局定义,在view中没有matchType
3)定义DataSet使用新建的DataType
4)定义DataGrid使用定义的DataSet
5)定义一个ToolBar,下面添加一个ToolBarButton,用来修改
6)定义一个Dialog,用来编辑数据
7) 在下面Children节点添加一个AutoForm,用来生成编辑表单
注意,这里使用dataSet是为了可以根据dataSet中的数据来生成表单中的控件
8)添加2个按钮,分别用来确定和取消
9)添加UpdateAction,用来更新操作
添加一个UpdateItem
10)后端代码
package sample.curd;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import sample.dataset.Product;
import sample.dataset.ProductDAO;
import com.bstek.dorado.annotation.DataProvider;
import com.bstek.dorado.annotation.DataResolver;
import com.bstek.dorado.data.entity.EntityState;
import com.bstek.dorado.data.entity.EntityUtils;
@Component
public class StdCURD {
@Autowired
private ProductDAO productDAO;
@DataProvider
public List<Product> getAll(){
return productDAO.getData();
}
@DataProvider
public List<Product> getByParam(Map<String, Object> params){
List<Product> resultList = new ArrayList<>();
if (params!=null && params.size()>0 && params.get("productId")!=null) {
long id = Long.valueOf((String)params.get("productId"));
for (Product product:productDAO.getData()) {
if (product.getId() == id) {
resultList.add(product);
return resultList;
}
}
}
return productDAO.getData();
}
@DataResolver
public void save(List<Product> products){
for (Product product : products) {
if (EntityState.DELETED.equals(EntityUtils.getState(product))) {
System.out.println("删除操作");
}else if (EntityState.MODIFIED.equals(EntityUtils.getState(product))) {
System.out.println("修改操作");
}else if (EntityState.NEW.equals(EntityUtils.getState(product))) {
System.out.println("新增操作");
}
}
productDAO.save(products);
}
}
最终页面如下:
(2)修改
1)为编辑按钮绑定onClick事件
// @Bind #edit.onClick
!function(dialogEdit){
dialogEdit.show();
}
2)为取消按钮绑定onClick事件
// @Bind #cancleBtn.onClick
!function(dsProducts,dialogEdit){
view.get("#dsProducts.data:#").cancel();
dialogEdit.hide();
}
意思是取消当前数据的操作,然后隐藏窗口
3)为确定按钮绑定onClick事件
// @Bind #confirmBtn.onClick
!function(updateAction,dialogEdit){
updateAction.execute(function(){
dialogEdit.hide();
});
}
(3)新增
1)添加新增按钮
2)为新增按钮添加onClick事件响应
// @Bind #addBtn.onClick
!function(dsProducts,dialogEdit){
dsProducts.getData().insert();
dialogEdit.show();
}
(4)删除(只能逻辑删除)
1)添加删除按钮
2)为删除按钮添加onClick事件响应
// @Bind #removeBtn.onClick
!function(dsProducts){
var entity = view.get("#dsProducts.data:#");
alert(entity.get("id"));
entity.remove();
if(entity){
dorado.MessageBox.confirm("确认要删除记录吗?", function(){
});
}
}