Extjs
Ext.BLANK_IMAGE_URL='../extsrc/resources/images/default/s.gif';
Ext.lib.Ajax.defaultPostHeader += ";charset=utf-8";
Ext.onReady(function(){
Ext.QuickTips.init();
//Ext.form.Field.prototype.msgTarget = 'side';
var globalURL = '../control/IndexMajor?act=showMajor';
// store
var store = new Ext.data.Store({
proxy: new Ext.data.ScriptTagProxy({//注意后台必须使用callback参数进行包装
url: globalURL
}),
reader : new Ext.data.JsonReader({
totalProperty : 'totalCount',
root : 'root'
}, [{
name : 'majorId'
}, {
name : 'majorName'
}, {
name : 'majorCode'
}, {
name : 'majorUseFlag'
}
])
//sortInfo:{field:'majorId', direction:'ASC'}
});
// start limit
store.load();
// cm
var cm = new Ext.grid.ColumnModel([{
id:'majorId',
header: "专业序号",
width:200,
dataIndex: 'majorId'
},{
id:'majorName',
header: "专业名称",
width:200,
dataIndex: 'majorName'
// ,renderer:sourceRenderer
},{
id:'majorCode',
header: "专业编码",
width:200,
dataIndex: 'majorCode'
// ,renderer:targetRenderer
},{
id:'majorUseFlag',
header: "使用标志",
width:100,
dataIndex: 'majorUseFlag'
// ,renderer:exectimeRenderer
}
]);
cm.defaultSortable = true;
var newrecord = Ext.data.Record.create([
{
name:'majorId',
type:'string'
}, {
name : 'majorName',
type : 'string'
}, {
name : 'majorCode',
type : 'string'
},{
name : 'majorUseFlag',
type : 'string'
},{
name : 'flag',
type : 'string'
}
]);
function doadd(){
var newrrecord = new newrecord({
majorId:'',
majorName : '',
majorCode : '',
majorUseFlag:'',
flag: '1'
})
grid.stopEditing();
store.insert(0, newrrecord);
}
function dosave() {
var m = grid.store.getModifiedRecords();
var jsonData = '[';
for (var i = 0; i < m.length; i++) { // m表示被修改的行
if(m[i].get('majorId')==''){
Ext.Msg.alert('信息提示', '专业序号不能为空!');
return false;
}
if(m[i].get('majorName')==''){
Ext.Msg.alert('信息提示', '专业名称不能为空!');
return false;
}
if(m[i].get('majorCode')==''){
Ext.Msg.alert('信息提示', '专业编码不能为空!');
return false;
}
if(m[i].get('majorUseFlag')==''){
Ext.Msg.alert('信息提示', '使用标志不能为空!');
return false;
}
var n=store.getCount();
jsonData = jsonData + Ext.util.JSON.encode(m[i].data) + ',';
}
jsonData += ']';
if (jsonData == '[]') {
Ext.Msg.alert('信息提示', '没有发现保存项,请确认有保存项!');
return false;
}
Ext.Msg.confirm('信息', '确定要保存所选项吗?', function(btn) {
if (btn == 'yes') {
Ext.MessageBox.wait("正在保存", "请稍候...");
Ext.Ajax.request({
url : '../control/IndexMajor?act=saveMajor',
params : {
jsonData : jsonData
},
method: 'POST',
success: function (request ) {
var message = request.responseText;
var resp=Ext.util.JSON.decode(request.responseText);
if(resp.success == 'fail'){
Ext.Msg.alert('信息','<center>保存项保存失败!<p>'+ resp.Info+'</center>');
}
else{
Ext.Msg.alert('信息','保存项保存成功!');
store.each(function(record) {
record.commit();
})
loadF = 0;
selectedrecord = null;
grid.getView().refresh();
saved=true;
store.reload();
renderGrid();
}
},
failure: function ( result, request) {
Ext.Msg.alert('错误','保存时出现未知错误.');
}
});
}
})
}
function dodelete(){
Ext.MessageBox.confirm('确认删除', '你真的要删除所选行记录吗?', function(btn) {
if (btn == 'yes') {
Ext.MessageBox.wait("正在删除", "请稍候...");
var m = grid.getSelections();
var majorIds='';
for(var i=0;i<m.length-1;i+=1){
majorIds+=m[i].get('majorId')+',';
}
pros+=m[m.length-1].get('protocol');
Ext.Ajax.request({
url : '../control/IndexMajor?act=deleteMajor',
params : {
majorIds : majorIds
},
method: 'POST',
success: function (request ) {
var resp=Ext.util.JSON.decode(request.responseText);
if(resp.success == 'fail'){
Ext.Msg.alert('信息','<center>记录删除失败!<p>'+ resp.Info+'</center>');
}
else{
Ext.Msg.alert('提示', '记录删除成功!');
store.reload();
grid.getView().refresh();
store.commitChanges();
}
},
failure: function ( result, request) {
Ext.Msg.alert('错误','删除时出现未知错误.');
}
});
}
})
}
// tbar
var tbar= [
{text:'查询',width:100,iconCls:'search',handler : dosearch},' ','-',
{text:'新增',width:100,iconCls:'user_add',handler : doadd},' ','-',
{text:'保存',width:100,iconCls:'save',handler : dosave},' ','-',
{text:'删除',width:100,iconCls:'user_delete',handler : dodelete}
];
// bbar
var bbar = new Ext.PagingToolbar({
pageSize : 30,
store : store,
displayInfo : true,
displayMsg : '共有 {2} 条记录.当前显示 {0} - {1}条记录.',
emptyMsg : "没有数据"
});
store.load({params : {start : 0,limit : 30}});
function renderGrid() {
store.load({
params : {
start : 0,
limit : 30
}
});
}
// grid
var grid = new Ext.grid.EditorGridPanel({
id:'grid',
store: store,
cm: cm,
height:Ext.getBody().getComputedHeight()-20,
//title:'任务管理',
frame:true,
// plugins:checkColumn,
clicksToEdit:1,
sm: new Ext.grid.RowSelectionModel({singleSelect:false}),
bbar: bbar,
tbar: tbar,
renderer:renderGrid()
});
// viewport
var viewport = new Ext.Viewport({
// region:'center',
layout:'fit',
split:true,
collapsible: true,
margins:'0 0 20 0',
frame:true,
items:[{autoScroll:false,items:[grid]}]
});
function dosearch() {
store.load({
params : {
start : 0,
limit : 30
}
});
grid.reconfigure(store, cm);
grid.getBottomToolbar().render();// 重新渲染询问工具栏
grid.view.startCollapsed = false;
}
});
handler
handler 要继承 org.apache.struts.action.Action
否则报错:
Bean named '/login'must be of type [org.apache.struts.action.Action], but was actually of type[action.LoginAction]
package com.econ.assessment;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.json.JSONArray;
import org.json.JSONObject;
import com.econ.assessment.bean.IndexdbConstants;
import com.econ.control.AbstractHandler;
import com.econ.control.BaseWebKeys;
/**
* 专业major管理
* @creator BEN by 2013.1.4
* @author JBL
*
*/
public class IndexMajorHandler extends AbstractHandler{
private String userAcct; //当前登录用户账号
private String userGrpId; //当前登录用户所属用户组Id
/**
* @param args
*/
private IndexMajorDAO madao=new IndexMajorDAO();
@Override
public String process(HttpServletRequest request, ActionForm form,
HttpServletResponse response) {
// TODO Auto-generated method stub
userAcct = request.getSession().getAttribute(
BaseWebKeys.SAK_SYS_USR_ACCT).toString();
userGrpId = request.getSession().getAttribute(
BaseWebKeys.SAK_SYS_USR_GRP_ID).toString();
String result = "IndexMajorShow";
String action = request.getParameter("act");
if("showMajor".equals(action))//显示专业
result = showMajor(request,response);
if("createMajor".equals(action))//创建专业
result = createMajor(request,response);
if("editMajor".equals(action))//修改专业
result = editMajor(request,response);
if("deleteMajor".equals(action))//删除专业
result = deleteMajor(request,response);
if("expireMajor".equals(action))//专业过期
result = expireMajor(request,response);
if("saveMajor".equals(action))//保存修改
result = saveMajor(request,response);
return result;
}
/**
* 查询展示
* @param request
* @param response
* @return
*/
public String showMajor(HttpServletRequest request,HttpServletResponse response){
String jsonStr = null;
String startStr = request.getParameter("start");
String limitStr = request.getParameter("limit");
String majorId = (request.getParameter("searchMajorId")!= null? request.getParameter("searchMajorId"):"");
String majorName = this.getRequestIsNull(request, "searchMajorName","utf-8");
String majorCode = (request.getParameter("searchMajorCode")!= null? request.getParameter("searchMajorCode"):"");
String majorUseFlag = (request.getParameter("searchMajorUseFlag")!= null? request.getParameter("searchMajorUseFlag"):"");
String majorHistoryFalg = (request.getParameter("historyFlag")!= null? request.getParameter("historyFlag"):"");
//System.out.println("majorname :"+majorName);
//int start = 0;
//int limit = 30;
int start = Integer.parseInt(startStr);;
int limit = Integer.parseInt(limitStr);;
String cb = request.getParameter("callback");
jsonStr = cb+madao.getMajor(start, limit, majorId, majorName, majorCode,majorUseFlag,majorHistoryFalg);
System.out.println(jsonStr);
request.setAttribute("jsonData", jsonStr);
return "extDataPage";
}
/**
* 在创建专业的同时,在历史库中新建记录,添加专业开始时间
* @param request
* @param response
* @return
*/
public String createMajor(HttpServletRequest request,HttpServletResponse response){
return "extDataPage";
}
/**
*
* @param request
* @param response
* @return
*/
public String editMajor(HttpServletRequest request,HttpServletResponse response){
return "extDataPage";
}
/**
* 软删除,只将use_flag置位。同时在历史库打上过期标记
* @param request
* @param response
* @return
*/
public String deleteMajor(HttpServletRequest request,HttpServletResponse response){
String jsonData = "";
try {
String majorCodes=request.getParameter("majorCodes");
String majorHistoryFalg = request.getParameter("historyFlag");
String[] majorCodeArr=majorCodes.split(",");
jsonData=madao.deleteMajor(majorCodeArr,majorHistoryFalg);
} catch (Exception e) {
e.printStackTrace();
jsonData=e.getMessage();
}
if (!jsonData.equalsIgnoreCase("")) {
jsonData = "{success:'fail',Info:'" + jsonData + "'}";
} else {
jsonData = "{success:'success',Info:'保存成功!'}";
}
request.setAttribute("jsonData", jsonData);
return "extDataPage";
}
/**
* 过期专业,需要更新历史库
* @param request
* @param response
* @return
*/
public String expireMajor(HttpServletRequest request,HttpServletResponse response){
return "extDataPage";
}
/**
* 保存修改
* @param request
* @param response
* @return
*/
public String saveMajor(HttpServletRequest request,HttpServletResponse response){
String jsonData = "";
List<String> addSqls=new ArrayList<String>();
List<String> updateSqls=new ArrayList<String>();
try {
String data = URLDecoder.decode(request.getParameter("jsonData"),"utf-8");
JSONArray jb = new JSONArray(data);
for(int i=0;i<jb.length();i++){
JSONObject jobj = jb.getJSONObject(i);
String majorId= jobj.getString("majorId");
String majorName = jobj.getString("majorName");
//String majorCode = jobj.getString("majorCode");
String majorUseFlag = jobj.getString("majorUseFlag");
String flag = jobj.getString("flag");
if(flag.equals("1")){
//新建的时候“使用标志”默认为1
String param=majorId+","+majorName+","+IndexdbConstants.bm_use_flag_use;
addSqls.add(param);
}else{
String param=majorId+","+majorName+","+majorUseFlag;
updateSqls.add(param);
}
}
jsonData = madao.addMajor(addSqls);
jsonData += madao.updateMajor(updateSqls);
} catch (Exception e) {
e.printStackTrace();
jsonData=e.getMessage();
}
if (!jsonData.equalsIgnoreCase("")) {
jsonData = "{success:'fail',Info:'" + jsonData + "'}";
} else {
jsonData = "{success:'success',Info:'保存成功!'}";
}
request.setAttribute("jsonData", jsonData);
return "extDataPage";
}
}
dao
package com.econ.assessment;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import com.econ.assessment.bean.IndexdbConstants;
import com.econ.control.AbstractDAO;
/**
* 专业major管理DAO类
* @creator BEN by 2013.1.4
* @author JBL
*
*/
public class IndexMajorDAO extends AbstractDAO{
public void getDBConn() {
this.getConn();
}
public void releaseDBConn() {
this.closeAll();
}
//修改考核专业
public String updateMajor(List<String> paramList){
String ret="";
int length = paramList.size();
if(length<1){
return ret;
}
String sql = "update sysadmin.T_INDEX_MAJOR set ORDER_NO=? "+", "+ "NAME=? "+", "+"USE_FLAG=? where CODE=?";
try {
this.getConn();
conn.setAutoCommit(false);
pStmt = conn.prepareStatement(sql);
for(int i=0;i<length;i++){
String[] params = paramList.get(i).split(",");
pStmt.setString(1, params[0]);
pStmt.setString(2, params[1]);
pStmt.setString(3, params[3]);
pStmt.setString(4, params[2]);
pStmt.addBatch();
}
pStmt.executeBatch();
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}finally {
this.closeAll();
}
ret = e.getMessage();
}
return ret;
}
//添加考核专业
public String addMajor(List<String> paramList){
String ret="";
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat();
sdf.applyPattern("yyyy-MM-dd");
//System.out.println(sdf.format(date));
String stime = sdf.format(date);
String type = "1";
String code = "";
int length = paramList.size();
if(length<1){
return ret;
}
String codeNoSql = "select sysadmin.SEQ_T_INDEX_MAJOR.NEXTVAL from DUAL";
String sql="insert into sysadmin.T_INDEX_MAJOR (ORDER_NO,NAME,CODE,USE_FLAG)values(?,?,?,?)";
String cycleSql = "insert into sysadmin.T_INDEX_CYCLE (PID,STIME,TYPE,CODE,FLAG)values(sysadmin.SEQ_T_INDEX_CYCLE.nextval,"+"to_date('"+stime+"','yyyy-mm-dd'),?,?,?)";
System.out.println("#######"+cycleSql);
try {
this.getConn();
conn.setAutoCommit(false);
pStmt = conn.prepareStatement(sql);
for(int i=0;i<length;i++)
{
stmt = conn.createStatement();
rs = stmt.executeQuery(codeNoSql);
if(rs.next()){
code = "MAJOR"+rs.getString("NEXTVAL");
}else{
return ret;
}
String[] params = paramList.get(i).split(",");
pStmt.setString(1, params[0]);
pStmt.setString(2, params[1]);
pStmt.setString(3, code);
pStmt.setString(4, params[2]);
pStmt.executeUpdate();
pStmt = conn.prepareStatement(cycleSql);
//pStmt.setString(1, stime);
pStmt.setString(1, type);
pStmt.setString(2, code);
pStmt.setString(3, params[2]);
pStmt.executeUpdate();
}
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
ret="数据插入失败";
}finally{
this.closeAll();
}
return ret;
}
//查询考核专业
public String getMajor(int start, int limit, String majorId, String majorName, String majorCode, String majorUseFlag,String majorHistoryFalg) {
StringBuffer sb = new StringBuffer();
int recordTotal = 0;
this.getConn();
String str="";
String etime ="";
String stime="";
int seatchFalg;
if(majorHistoryFalg != null && majorHistoryFalg.equals("mark") ){
seatchFalg = IndexdbConstants.bm_use_flag_unuse;
}else{
seatchFalg = IndexdbConstants.bm_use_flag_use;
}
String sqlTotal = "select count(*) from sysadmin.T_INDEX_MAJOR m,sysadmin.T_INDEX_CYCLE c where m.USE_FLAG = "+seatchFalg+" and m.CODE = c.CODE";
// select * from (select t1.*, rownum r from (select m.order_no,m.name,m.code,m.use_flag,c.stime,c.etime from sysadmin.T_INDEX_MAJOR m,sysadmin.T_INDEX_CYCLE c where m.USE_FLAG = 1 and c.CODE = m.CODE order by m.ORDER_NO) t1 where rownum<31) where r>0
String sqlShow = "select * from (select t1.*,rownum r from (select m.order_no,m.name,m.code,m.use_flag,c.stime,c.etime from sysadmin.T_INDEX_MAJOR m,sysadmin.T_INDEX_CYCLE c where m.USE_FLAG = "+seatchFalg+" and m.CODE = c.CODE";
int finish = start + limit + 1;
if(majorId!=null&&!majorId.equals("")){
str+=" and m.ORDER_NO like'%"+majorId+"%'";
}
if(majorName!=null&&!majorName.equals("")){
str+=" and m.NAME like'%"+majorName+"%'";
}
if(majorCode!=null&&!majorCode.equals("")){
str+=" and m.CODE like'%"+majorCode+"%'";
}
if(majorUseFlag!=null&&!majorUseFlag.equals("")){
str+=" and m.USE_FLAG like'%"+majorUseFlag+"%'";
}
sqlTotal+=str;
sqlShow = sqlShow +str+ " order by ORDER_NO) t1 where rownum<"
+ finish + ") where r>" + start ;
try {
System.out.println(sqlShow);
stmt = conn.createStatement();
rs = stmt.executeQuery(sqlTotal);
while (rs != null && rs.next()) {
recordTotal = rs.getInt(1);
}
sb.append("({totalCount:" + recordTotal + ",root:[");
rs = stmt.executeQuery(sqlShow);
while (rs.next()) {
sb.append("{majorId:'" + rs.getString("ORDER_NO") + "',");
sb.append("majorName:'" + rs.getString("NAME") + "',");
sb.append("majorCode:'" + rs.getString("CODE") + "',");
sb.append("majorUseFlag:'" + rs.getString("USE_FLAG") + "',");
stime = rs.getString("STIME");
etime = rs.getString("ETIME");
sb.append("majorStime:'" + stime.substring(0, 10) + "',");
if(etime == null){
etime = "正在使用";
sb.append("majorEtime:'" + etime + "'},");
}else{
//etime.substring(0, 10);
sb.append("majorEtime:'" + etime.substring(0, 10) + "'},");
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
this.closeAll();
}
if ( sb.length()>0 && sb.lastIndexOf(",") == sb.length() - 1) {
sb = sb.deleteCharAt(sb.length() - 1);
}
sb.append("]})");
return sb.toString();
}
//删除 软删除,只将use_flag置位。同时在历史库打上过期标记
public String deleteMajor(String[] majorCodeArr,String majorHistoryFalg){
String ret="";
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat();
sdf.applyPattern("yyyy-MM-dd");
String etime = sdf.format(date);
int delFalg;
String cycleSql;
if(majorHistoryFalg != null && majorHistoryFalg.equals("mark")){
delFalg = IndexdbConstants.bm_use_flag_use;
cycleSql ="update sysadmin.T_INDEX_CYCLE set FLAG = "+delFalg+",ETIME = to_date('','yyyy-mm-dd') where CODE =?";
}else{
delFalg = IndexdbConstants.bm_use_flag_unuse;
cycleSql = "update sysadmin.T_INDEX_CYCLE set FLAG = "+delFalg+",ETIME = to_date('"+etime+"','yyyy-mm-dd') where CODE =?";
}
String sql = "update sysadmin.T_INDEX_MAJOR set USE_FLAG = "+delFalg+"where CODE =?";
// update sysadmin.T_INDEX_CYCLE set FLAG = 0, ETIME = to_date('2012-12-12','yyyy-mm-dd') where sysadmin.T_INDEX_CYCLE.CODE ='Major1011';
try {
this.getConn();
conn.setAutoCommit(false);
for(int i=0;i<majorCodeArr.length;i++){
pStmt = conn.prepareStatement(sql);
pStmt.setString(1, majorCodeArr[i]);
pStmt.executeUpdate();
pStmt = conn.prepareStatement(cycleSql);
pStmt.setString(1, majorCodeArr[i]);
pStmt.executeUpdate();
}
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
ret=e.getMessage();
}
}finally{
this.closeAll();
}
return ret;
}
}