接着是用户管理.不过,这里的Ext代码还没有用到面向对象的思想,
因为看论坛里有朋友说不喜欢看完整一大堆代码,所以我这里只贴一部分,如果有朋友需要完整的请下载附件,
我自己也还在学习阶段,如果朋友有好的建议请留留言,谢谢!!
前台部分代码:
一个grid是必要的
var grid = new Ext.grid.GridPanel({
loadMask:{msg:'正在加载数据,请稍后'},//加载时显示的信息
store:store,//加载名为store的数据集
columns:[//要显示的列
new Ext.grid.RowNumberer,//获得行号
{header:'ID',dataIndex:'userid',sortable:true},
{header:'用户名',dataIndex:'username'}//dataIndex对应store的fields中的字段
],
bbar:new Ext.PagingToolbar({//定义分页工具栏
store:store,//同样要指定对哪个store进行分页
pageSize:5,//每页数据数
displayInfo:true,//true时显示displayMsg,emptyMsg等提示信息
displayMsg:'第{0}条到{1}条,一共{2}条',
emptyMsg:'没有记录'
}),
tbar:[{
text:"新增用户",
handler:addUser
},"-",{//"-"到页面显示成"|"分隔符状
}]
});
这个grid加载的store我在外面定义,在grid中定义也行的
var store = new Ext.data.JsonStore({
reader:new Ext.data.JsonReader(),//用于将一个json对象转换为元数据对象
autoLoad:{params:{start:0,limit:5}},//如果有值传入,那么store的load会自动调用,加载时会将params中的属性发送到后台
root:'result',//指定包含所有行对象的数组名
totalProperty:'totalProperty',//总记录数
proxy:new Ext.data.HttpProxy({ //用访问数据对象,用于访问某个url的
url:'admin!queryAllUser.action'
}),
fields:["userid","username","password","sex","age"]//从后台接受的字段
});
新增用户和更新用户代码差不多,我就说更新用户的,但是radiogroup加载不到,我在网上暂时找不到合适的解决方法,如果有朋友知道麻烦留言指点一下
function updateUser(){
var record = grid.getSelectionModel().getSelected();//获得当前选中的行的全部数据
if(!record){//说明没选中任何一行
Ext.Msg.alert("提示","请选择一条记录");
}
if(!win){//如果win存在,就不用创建,配合closeAction使用
var win = new Ext.Window({
closeAction:"hide",//表示关闭窗口时将窗口隐藏,因为新建一个窗口将消耗不小的资源,速度也慢
items:[{
xtype:"form",//定义window中有一个form组件,用于提交数据
method:"post",
items:[{
xtype:"panel",
layout:"column",
labelWidth:50,
border:false,
items:[{
xtype:"panel",
layout:"form",
border:false,
items:[{
xtype:"hidden",//不允许
name:"userid"
},{
xtype:"textfield",
fieldLabel:"用户名",
name:"username"
}]
},{
xtype:"panel",
layout:"form",
border:false,
items:[{
xtype:"textfield",
fieldLabel:"密码",
name:"password",
inputType:"password"
}]
}]
},{
xtype:"panel",
border:false,
layout:"form",
items:[{
xtype:"radiogroup",
fieldLabel : "类型",
columns:1, //三个空心圆排成一竖列
items : [{
name : "sex",
inputValue : "男", //选中后sex的值是"男"
boxLabel : "男"
},{
name : "sex",
inputValue : "女",
boxLabel : "女"
},{
name : "sex",
inputValue : "未知",
boxLabel : "未知"
},]
},{
xtype:"panel",
layout:"form",
border:false,
items:[{
xtype:"numberfield",
fieldLabel:"年龄",
name:"age"
}]
}]
}]
}] ,
buttons:[{
text:"保存",
handler:function(){
win.getComponent(0).getForm().submit({//getComponent(0)表示获得win的第一个组件,即form,再调用getForm()方法获得basicform对象,操作表单数据都要通过这个对象
url:"admin!updateUser.action",
success:function(){
Ext.Msg.alert("提示","更新用户成功");
win.close();
store.reload();
}
});
}
},{
text:"重置",
handler:function(){
win.getComponent(0).getForm().reset();
}
},{
text:"取消",
handler:function(){
win.close();
}
}]
});
win.getComponent(0).getForm().loadRecord(record);//加载这一行的数据,但是radiogroup加载不到,我在网上暂时找不到合适的解决方法,如果有朋友知道麻烦留言指点一下
win.show();
}
}
最后还有删除用户:
部分代码如下
function deleteUser(){
var record = //同上
Ext.Msg.confirm("提示","是否确定删除?",function(b){//参数是响应的值
if(b == "yes"){
var userId = record.get("userid");//record获得方法同上,get方法获得该字段的值
Ext.Ajax.request({//向后台发送请求
url:"admin!deleteUser.action",
params:{userId:userId},//将userId传到后台
success:function(){
Ext.Msg.alert("提示","删除成功!");
store.reload();
}
});
}
});
}
更新用户的后台部分代码:
public String updateUser() throws IOException{
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType( "text/html;charset=utf-8");
int userid = Integer.parseInt(request.getParameter( "userid"));//这样就可以获得前台传过来的字段
String username = request.getParameter("username");
if("".equals(username)){//对于数据库中非空的字段,需要进行判断
response.getWriter().write( "{\"success\":false,\"errors\":{\"username\":\"用户名不能为空!\"}}");
return null;
}
User user = new User();
user.setUserid(userid);
user.setUsername(username);
as.updateUser(user);
response.getWriter().write( "{success:true}");
return null;
}
删除用户的后台:
通过 request.getParameter("userId")就可以进行操作了
不好意思,还少了加载store时查询用户的后台:
DAO中:
public List<User> queryAllUser(final String start,final String limit){
final String sql = "select new map"
+ "(u.userid as userid,u.username as username,u.password as password,u.sex as sex,u.age as age)"
+ " from User u order by u.userid";//将查询到得数据转换成map再放进list中,并且指定根据userid排序
return ht.executeFind(new HibernateCallback(){
public Object doInHibernate(Session session){
Query query = session.createQuery(sql);
return query.setFirstResult(Integer.parseInt(start)).setMaxResults(Integer.parseInt(limit)).list();
}
});
}
service中:
public String queryAllUser(String start,String limit){
List<User> listUser = ad.queryAllUser(start,limit);
JSONArray json = JSONArray.fromObject(listUser);//将DAO传过来的list转化为json数组的形式
String jsonMsg = "{\"totalProperty\":" + ad.queryUserSize() + ",\"result\":" + json.toString() + "}";//拼装传向前台的json数据
return jsonMsg;
}
action中:
private String start;//其实定义为int的就行了
private String limit;//这里我设计得不好
public String queryAllUser() throws IOException{
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType( "text/html;charset=gb2312");
response.getWriter().write( as.queryAllUser(getStart(),getLimit()));//往前台传送json数据
System.out.println(as.queryAllUser(getStart(),getLimit()));//通过get方法即可获得前台autoLoad中传的属性
return null;
}
分享到:
相关推荐
gin + mysql + jwt + captcha curd 学习
MVC +EF +Linq+Lamda+CURD 增删改查 分页
NULL 博文链接:https://xieyongqiu-163-com.iteye.com/blog/432842
的时刻记得咯哈伦裤哈伦裤撒都比较好舒服的vbjh的渴望却发给我iuf
Struts2+Hibernate+Spring整合与增、删、改、查CURD操作源码
NULL 博文链接:https://jbeduhai.iteye.com/blog/1095048
Servlet+ajax实现的增删改查功能程序,下载用Eclipse导入,即可运行。
本项目是基于SSH(srpingMVC+spring3=hibernate4)自己学习完成的业余小的增删改查系统,方便大家学习,多多交流。
STRUTS2 + HIBERNATE2.0_SPRING jar包
spring+springmvc+mybatis+多表curd操作,用来练习。。
这个是简单的MVC3+LINQ进行数据库CURD的操作 适合新手入门学习
JSP+Ext实现CURD
通过Spring Initializr快速生成springboot项目+mybatis generator反向生成代码+easyui 的表单设计(增删改查-分页)+ajax异步操作+mysql源数据库+单元测试+详细注解及个人编程的运到困难
Struts2+Spring+ibatis实现怎删改查以及分页的功能。本文档将项目的配置文件、源代码等全部实现。方便初学者学习ssi三大框架的整合,以及一个相对复杂的难题——与ssi框架结合的分页。该文档十分详细,按照代码结构...
自己整合的简单CURD一般人都可以看懂带简单版的分页
完整的java后端和easyui相结合的curd,很不错的demo。
使用C#窗体和sql2008实现人员信息的增删改操作,内附数据库以及sql脚本