ext+dwr完整的例子(包括树,增删改查等)
ext+dwr完整的例子(包括树,增删改查等)
文章分类:Web前端 关键字: ext+dwr完整的例子(包括树, 增删改查等)
---js
var UI = function(){
var ds;
var grid;
return {
init : function() {
Ext.QuickTips.init();
initDataSource();
ds.load({params:{start:0, limit:15}});
buildUI();
},
getStore: function() {
return ds;
}
};
function initDataSource(){
var recordType = Ext.data.Record.create([
{name:"id",type:"string"},
{name:"wf_id",type:"string"},
{name:"dept_name",type:"string"},
{name:"fax",type:"string"},
{name:"send_time",type:"date"}
]);
var proxy = new Ext.data.DWRProxy(AddHideColumn.getList, true);
ds = new Ext.data.Store({
proxy: proxy,
reader: new Ext.data.ListRangeReader(
{id:'id', totalProperty:'totalSize'}, recordType),
remoteSort: true
});
}
function getColumnModel(){
var columnModel = new Ext.grid.ColumnModel([{
header: 'ID',
width: 40,
align: 'center',
sortable: true,
dataIndex: 'id'
},
{
header: '流程ID',
width: 150,
align: 'left',
sortable: true,
dataIndex: 'wf_id'
},
{
header: '单位',
width: 150,
align: 'left',
sortable: true,
dataIndex: 'dept_name'
},
{
header: '传真',
width: 150,
align: 'left',
sortable: true,
dataIndex: 'fax'
},
{
header: '发送时间',
width: 150,
align: 'left',
sortable: true,
dataIndex: 'send_time',
renderer: Ext.util.Format.dateRenderer('Y-n-j G:i')
}
]);
columnModel.defaultSortable = true;
return columnModel;
}
function buildUI(){
var tb = new Ext.Toolbar( [{
text: '新建',
cls: 'x-btn-text-icon',
icon: '../images/iconNewNewsEntry.gif',
handler: function(){
showCreateUserDialog();
}
},{
text: '编辑',
cls: 'x-btn-text-icon',
icon: '../images/ed.gif',
handler : function(){
doEdit();
}
},{
text: '删除',
cls: 'x-btn-text-icon',
icon: '../images/removesmall.gif',
handler : function(){
doDel();
}
},
{
text: '机构树',
cls: 'x-btn-text-icon',
icon: '../images/search.gif',
handler : function(){
showTree();
}
}
]);
var bbar = new Ext.PagingToolbar({
pageSize: 15,
store: ds,
displayInfo: true,
displayMsg: '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
emptyMsg: "没有记录"
})
grid = new Ext.grid.GridPanel({
store: ds,
cm: getColumnModel(),
height: 350,
selModel: new Ext.grid.RowSelectionModel({singleSelect:false}),
enableColumnHide: true,
enableColumnMove: true,
stripeRows: true,
tbar:tb,
bbar: bbar
});
var win = new Ext.Window({
closable: true,
width: 820,
height: 420,
x: 230,
y: 100,
plain: true,
layout: 'border',
items: [{
region: 'center',
layout: 'fit',
title: '例子',
items: [grid]
}]
});
win.show();
}
/*****************************/
//添加
function showCreateUserDialog(){
var editDialog;
var editForm;
editForm = new Ext.FormPanel({
labelAlign: 'right',
url:'',
bodyStyle:'padding:5px 5px 0',
autoScroll: true,
items:[
new Ext.form.TextField({
fieldLabel: 'ID',
name: 'id',
readOnly: false,
allowBlank:false,
width: 180,
maxLength: 32
}),
new Ext.form.TextField({
fieldLabel: '流程ID',
name: 'wfid',
readOnly: false,
allowBlank:false,
width: 180,
maxLength: 32
}),
new Ext.form.TextField({
fieldLabel: '单位',
name: 'deptname',
allowBlank:false,
width: 180,
maxLength: 50
}),
new Ext.form.TextField({
fieldLabel: '传真',
name: 'fax',
allowBlank:false,
width: 180,
maxLength: 50
}),
new Ext.form.TextField({
fieldLabel: '发送时间',
name: 'sendtime',
allowBlank:false,
width: 180,
maxLength: 50,
renderer: Ext.util.Format.dateRenderer('Y-n-j G:i')
}),
new Ext.form.Hidden({
name: 'id'
})
]
});
editDialog = new Ext.Window({
el: 'edit-user-dlg',
layout: 'fit',
width:360,
height:302,
resizable: false,
title: '编辑',
//border:false,
closeAction:'hide',
plain:true,
modal: true,
items: [editForm],
buttons: [{
text: '保存',
handler: doSaveAction
},{
text: '取消',
handler: function() {
editDialog.hide();
}
}]
});
document.getElementById("edit-user-dlg").innerHTML='';
editDialog.show();
function doSaveAction(){
var form = editForm.getForm();
if(!form.isValid()){
Ext.MessageBox.alert('提示','数据不正确');
return;
}
//保存数据
var formData = {id: '',wf_id: '',dept_name: '',fax: '',send_time: ''};
formData.id = form.findField('id').getValue();
formData.dept_name = form.findField('deptname').getValue();
formData.fax = form.findField('fax').getValue();
formData.wf_id = form.findField('wfid').getValue();
formData.send_time = form.findField('sendtime').getValue();
//alert(formData.dept_name+', ' + formData.fax + ', ' + formData.id +', ' +formData.send_time +', ' +formData.wf_id);
AddHideColumn.insert(formData,isSucc);
function isSucc(flag){
var msg = '失败';
if(flag>0){
msg = '成功';
}
Ext.MessageBox.alert('提示','操作'+msg);
editDialog.hide();
ds.reload();
}
}
}
//修改
function doEdit(){
var chks = grid.getSelections();
if(chks.length>1){
Ext.MessageBox.alert('提示','编辑时只能选择一行');
return;
}
else if(chks.length == 0){
Ext.MessageBox.alert('提示','没选择任何行');
return;
}
else{
document.getElementById("edit-user-dlg").innerHTML='';
cinfirmEdit();
}
}
function cinfirmEdit(){
var editDialog;
var editForm;
var leType = Ext.data.Record.create([
{name:"id",type:"string"},
{name:"wfid",type:"string"},
{name:"deptname",type:"string"},
{name:"fax",type:"string"},
{name:"sendtime",type:"date"}
]);
editForm = new Ext.FormPanel({
labelAlign: 'right',
url:'',
bodyStyle:'padding:5px 5px 0',
autoScroll: true,
items:[
new Ext.form.TextField({
fieldLabel: 'ID',
name: 'id',
readOnly: true,
allowBlank:false,
width: 180,
maxLength: 32
}),
new Ext.form.TextField({
fieldLabel: '流程ID',
name: 'wfid',
readOnly: false,
allowBlank:false,
width: 180,
maxLength: 32
}),
new Ext.form.TextField({
fieldLabel: '单位',
name: 'deptname',
allowBlank:false,
width: 180,
maxLength: 50
}),
new Ext.form.TextField({
fieldLabel: '传真',
name: 'fax',
allowBlank:false,
width: 180,
maxLength: 50
}),
new Ext.form.TextField({
fieldLabel: '发送时间',
name: 'sendtime',
allowBlank:false,
width: 180,
maxLength: 50,
renderer: Ext.util.Format.dateRenderer('Y-n-j G:i')
}),
new Ext.form.Hidden({
name: 'id'
})
]
});
editDialog = new Ext.Window({
el: 'edit-user-dlg',
layout: 'fit',
width:360,
height:302,
resizable: false,
title: '编辑',
//border:false,
closeAction:'hide',
plain:true,
modal: true,
items: [editForm],
buttons: [{
text: '保存',
handler: doSaveAction
},{
text: '取消',
handler: function() {
editDialog.hide();
}
}]
});
editDialog.show();
fillEditForm(); //添充表单
function doSaveAction(){
var form = editForm.getForm();
if(!form.isValid()){
Ext.MessageBox.alert('提示','数据不正确');
return;
}
//保存数据
var formData = {id: '',wf_id: '',dept_name: '',fax: '',send_time: ''};
formData.id = form.findField('id').getValue();
formData.dept_name = form.findField('deptname').getValue();
formData.fax = form.findField('fax').getValue();
formData.wf_id = form.findField('wfid').getValue();
formData.send_time = form.findField('sendtime').getValue();
//alert(formData.dept_name+', ' + formData.fax + ', ' + formData.id +', ' +formData.send_time +', ' +formData.wf_id);
AddHideColumn.insert(formData,isSucc);
function isSucc(flag){
var msg = '失败';
if(flag>0){
msg = '成功';
}
Ext.MessageBox.alert('提示','操作'+msg);
editDialog.hide();
ds.reload();
}
}
function fillEditForm(){
var chs = grid.getSelections();
var form = editForm.getForm();
var rowData = chs[0];
form.findField('wfid').setValue(rowData.get('wf_id'));
form.findField('deptname').setValue(rowData.get('dept_name'));
form.findField('fax').setValue(rowData.get('fax'));
form.findField('sendtime').setValue(rowData.get('send_time'));
form.findField('id').setValue(rowData.get('id'));
}
}
//删除
function doDel(){
var chs = grid.getSelections();
if(chs.length>0){
Ext.MessageBox.confirm('提示','是否确定删除?',confirmDel)
}
else{
Ext.MessageBox.alert('提示','还没选者要删除的行!');
}
//确认删除
function confirmDel(btn){
if(btn == 'yes'){
var itms = new Array();
for(var i=0; i<chs.length; i++){
itms.push(chs[i].get("id"));
}
AddHideColumn.deleteFax(itms,isSucc);
}
}
//是否删除成功
function isSucc(flag){
var msg = '失败';
if(flag>0){
msg = '成功';
}
Ext.MessageBox.alert('提示','操作'+msg);
ds.reload();
}
}
//显示树
function showTree(){
var nodeId;
document.getElementById("view-group-tree-dlg").innerHTML='';
var loader = new Ext.tree.DWRTreeLoader(TreeService.queryByNodeId, []);
var root = new Ext.tree.AsyncTreeNode({text: '中国', id:'1000'});
var tree = new Ext.tree.TreePanel({
id: 'deptTree',
loader:new Ext.tree.DWRTreeLoader(TreeService.queryByNodeId, {}, []),
border:false,
root:root
});
var treeEditer = new Ext.tree.TreeEditor(
Ext.getCmp('deptTree'),//将tree组建的实例放入
{
id:'tree-eidtTree',
allowBlank: false//输入的值不可以为空
}
);
tree.on('contextmenu',function(node,event){
nodeId = node.id;
event.preventDefault(); //这行是必须的
rightClick.showAt(event.getXY());//取得鼠标点击坐标,展示菜单
});
//右键菜单
var rightClick = new Ext.menu.Menu({
id :'rightClickCont',
items : [{
id:'addNode',
text : '添加',
menu:[
{
id:'insertNode',
text:'添加同级节点',
handler : function() {
showCreateUserDialog();
}
},
{
id:'appendNode',
text:'添加子节点',
handler : function(){
showCreateUserDialog();
}
}
]
}, {
id:'delNode',
text : '删除',
handler : function() {
showCreateUserDialog();
}
}, {
id:'editnode',
text : '修改',
handler : function() {
showCreateUserDialog();
}
}]
});
/*
//增加树节点
function addDialog(){
document.getElementById("addNode-Dialog").innerHTML='';
var addNodeform = new Ext.FormPanel({
labelAlign : 'right',
url : '',
bodyStyle : 'padding:5px 5px 0',
autoScroll : true,
items : [new Ext.form.TextField({
fieldLabel : '节点名称',
name : 'name',
allowBlank : false,
width : 180,
maxLength : 50
}), new Ext.form.NumberField({
fieldLabel : '节点代码',
name : 'id',
allowBlank : false,
width : 180
}),
new Ext.form.ComboBox({
fieldLabel : '是否叶子节点',
store : new Ext.data.SimpleStore({
fields : [{
name : 'label',
type : 'string'
}, {
name : 'value',
type : 'string'
}],
data : [['是', 1], ['否', 0]]
}),
editable : false,
allowBlank : false,
hiddenName : 'enabled',
displayField : 'label',
valueField : 'value',
typeAhead : true,
mode : 'local',
triggerAction : 'all',
emptyText : '设定节点...',
selectOnFocus : true,
width : 180
})]
});
var addNodeDialog = new Ext.Window({
el: 'addNode-Dialog',
layout: 'fit',
width:360,
height:302,
resizable: false,
title: '添加节点',
//border:false,
closeAction:'hide',
plain:true,
modal: true,
items: [addNodeform],
buttons: [{
text: '保存',
handler: function() {
saveNode();
}
},
{
text: '关闭',
handler: function() {
addNodeDialog.hide();
}
}
]
});
addNodeDialog.show();
//保存
function saveNode(){
var form = addNodeform.getForm();
var formData = {id: '',name: '',leaf: '',parentId:''};
formData.id = form.findField('id').getValue();
formData.name = form.findField('name').getValue();
formData.leaf = form.findField('enabled').getValue();
formData.parentId = nodeId;
//alert(formData.id+formData.name+formData.leaf+formData.parentId);
TreeService.addNode(formData,isSucc);
root.expandChildNodes(true);
//是否删除成功
function isSucc(flag){
var msg = '失败';
if(flag>0){
msg = '成功';
}
Ext.MessageBox.alert('提示','操作'+msg);
}
}
}
*/
var viewDialog = new Ext.Window({
el: 'view-group-tree-dlg',
layout: 'fit',
width:360,
height:302,
resizable: false,
title: '机构树',
//border:false,
closeAction:'hide',
plain:true,
modal: true,
items: [tree],
buttons: [{
text: '关闭',
handler: function() {
viewDialog.hide();
}
}]
});
viewDialog.show();
}
}();
Ext.onReady(UI.init, UI);
--TreeService.java
package ext.service;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import ext.bean.Tree;
import ext.db.DBHelp;
public class TreeService {
/**
* 根据节点ID查找其子节点
* @param nodeId
* @return
*/
public List queryByNodeId(String nodeId){
String sql = "select id,name,isLeaf,parentId, sortOrder from Docmnt_Content ";
sql += "where parentId ='" + nodeId +"'";
List<Object> nodeList = new ArrayList<Object>();
Map<String,Object> map = null;
try{
ResultSet rs = DBHelp.getStatement().executeQuery(sql);
while(rs.next()){
boolean bl = rs.getString("isLeaf").equals("1") ? true : false;
map = new HashMap<String,Object>();
map.put("id",rs.getInt("id"));
map.put("text", rs.getString("name"));
map.put("leaf",bl );
map.put("parentId",rs.getInt("parentId"));
map.put("sortOrder",rs.getInt("sortOrder"));
map.put("expandable", !bl);
nodeList.add(map);
System.out.println(bl + rs.getString("name") + rs.getString("isLeaf"));
}
}catch(Exception ex){
ex.printStackTrace();
}
return nodeList;
}
public int addNode(Tree tree){
String sql = "insert into Docmnt_Content(id,name,isLeaf,parentId,sortOrder) values('"+ tree.getId() +"','";
sql+= tree.getName() +"','" + tree.getLeaf() +"','" + tree.getParentId() +"',0)";
try{
DBHelp.getStatement().executeQuery(sql);
}catch(Exception ex){
ex.printStackTrace();
return 0;
}
return 1;
}
}
--AddHideColumn.java
package ext.service;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.ArrayUtils;
import ext.bean.FAX;
import ext.bean.ListRange;
import ext.bean.Column;
import ext.db.DBHelp;
public class AddHideColumn {
public List queryColumns(String uid,String url){
String qSql = "select * from t_hideColumn where id='"+ uid +"' and url ='" + url +"'";
List<String> columns = null;
try{
ResultSet rs = DBHelp.getStatement().executeQuery(qSql);
if(rs.next()){
columns = new ArrayList<String>();
String col =rs.getString(3);
String colArr[] = col.split(";");
for(int i=0;i<colArr.length ;i++){
if(!"".equals(colArr[i]))
columns.add(colArr[i]);
}
}
}
catch(Exception ex){
System.out.println("查询列数据失败...");
}
return columns;
}
public ListRange getList(int startPosition, int maxResults, String orderBy){
List<FAX> list = new ArrayList<FAX>();
String qSql = "select * from zsy_fax_status_temp";
try{
ResultSet rs = DBHelp.getStatement().executeQuery(qSql);
while(rs.next()){
FAX fax = new FAX();
fax.setId(rs.getString("id"));
fax.setDept_name(rs.getString("dept_name"));
fax.setFax(rs.getString("fax"));
fax.setWf_id(rs.getString("wf_id"));
fax.setSend_time(rs.getString("send_time"));
list.add(fax);
}
}catch(Exception ex){
ex.printStackTrace();
}
FAX[] FAXArray = list.toArray(new FAX[0]);
ListRange result = new ListRange();
result.setTotalSize(list.size());
int start = startPosition;
int end = maxResults < 0 ? Integer.MAX_VALUE : start + maxResults;
result.setData(ArrayUtils.subarray(FAXArray, start, end));
return result;
}
public String insert(FAX obj){
String dSql = "delete from zsy_fax_status_temp where id='" + obj.getId() +"'";
String sql = "insert into zsy_fax_status_temp(id,wf_id,dept_name,fax,send_time) values('";
sql+= obj.getId() + "','" + obj.getWf_id() + "','" + obj.getDept_name() + "','" + obj.getFax() + "','";
sql+= obj.getSend_time() + "')";
try{
DBHelp.getStatement().execute(dSql);
DBHelp.getStatement().execute(sql);
}catch(Exception ex){
ex.printStackTrace();
System.out.println("添加数据失败...");
return "0";
}
return "1";
}
public String deleteFax(String id[]){
String sql = "delete from zsy_fax_status_temp where id ='";
try{
for(int i=0; i<id.length ;i++){
sql = sql + id[i]+"'";
DBHelp.getStatement().execute(sql);
}
}catch(Exception ex){
ex.printStackTrace();
System.out.println("删除数据失败...");
return "0";
}
return "1";
}
}