SSH电子商务新项目实战演练之八:查寻和删掉产
摘要: 上一节大家进行了应用DataGrid显示信息全部产品信息内容,这节大家刚开始加上好多个作用:加上、升级、删掉和查寻。最先大家完成下前台接待的显示信息,随后再做后台管理获得数...
上一节大家进行了应用DataGrid显示信息全部产品信息内容,这节大家刚开始加上好多个作用:加上、升级、删掉和查寻。最先大家完成下前台接待的显示信息,随后再做后台管理获得数据信息。
1. 加上、升级、删掉和查寻作用的前台接待完成
DataGrid控制里有一个toolbar特性,是加上专用工具栏的,大家能够在toolbar特性中加上这种按键来完成相对的作用。首先看一下官方网文本文档对toolbar的界定:
大家应用数字能量数组的方法界定专用工具栏,在query.jsp网页页面中澳加上以下编码:
XML/HTML编码 %@ page language= java import= java.util.* pageEncoding= UTF-8 % !DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN html head %@ include file= /f % style type= text/css body { margin: 1px; } .searchbox { margin: -3; } /style script type= text/javascript $(function(){ $('#dg').datagrid({ //url详细地址改成恳求categoryAction url:'ount.action', singleSelect:false, //假如为真,只容许单行显示信息,全选作用无效 //设定分页查询 pagination:true, //设定每张显示信息的纪录数,默认设置是10个 pageSize:5, //设定可选择的每张纪录数,供客户挑选,默认设置是10,20,30,40... pageList:[5,10,15,20], idField:'id',//特定id为标志字段名,在删掉,升级的情况下有效,假如配备此字段名,在换页时,换页不容易危害选定的项 /*********************加上的编码***********************/ toolbar: [{ iconCls: 'icon-add', text:'加上类型', handler: function(){ alert('--添加类型--'); } },'-',{ iconCls: 'icon-edit', text:'升级类型', handler: function(){ alert('--升级类型--'); } },'-',{ iconCls: 'icon-remove', text:'删掉类型', handler: function(){ //分辨是不是有选定行纪录,应用getSelections获得选定的全部行 var rows = $( #dg ).datagrid( getSelections //回到被选定的行,假如沒有一切行被选定,则回到空数字能量数组 if(rows.length == 0) { //弹出来提醒信息内容 $.messager.show({ //英语的语法相近于java中的静态数据方式,立即目标启用 title:'不正确提醒', msg:'最少应选择一条纪录', timeout:2000, showType:'slide', }); } else { //提醒是不是确定删掉,假如确定则实行删掉的逻辑性 $.messager.confirm('删掉确实认会话框', '您明确要删掉该项吗?', function(r){ if (r){ // 撤出实际操作; alert( --删掉实际操作-- ) } }); } } },'-',{ //查寻按键并不是LinkButton,它有英语的语法,可是也适用分析HTML标识 text: input id='ss' name='serach' / }], //把一般的文字框转换为查寻检索文字框 $('#ss').searchbox({ //开启查寻恶性事件 searcher:function(value,name){ //value表明键入的值 //查寻实际操作 }, prompt:'请键入检索重要字' //默认设置的显示信息 }); /*********************************************************************/ }); /script /head body table id= dg /table /body /html那样大家就搭好啦加上、升级、删掉和查寻的前台接待架构了,如今能够在前台接待显示信息了,后台管理沒有数据信息回来,仅仅弹出来个提醒框,但是显示信息作用早已进行,看一下实际效果:
接下去大家逐一来进行相对的作用。
2. DataGrid类型查寻的完成
查寻的完成是非常简单的,在搜索框中键入重要字,随后将重要字做为主要参数发送给action,随后Service从数据信息库文件取出数据信息,装包成json文件格式传入前台接待来显示信息就可以,这一全过程旁边面显示信息全部产品信息内容是一样的,大家只必须在上边jsp中加上检索一部分的编码就可以,别的无需更改,加上的编码以下:
JavaScript编码 //把一般的文字框转换为查寻检索文字框 $('#ss').searchbox({ //开启查寻恶性事件 searcher:function(value,name){ //value表明键入的值 //alert(value + , + name) //获得当今查寻的重要字,根据DataGrid载入相对的信息内容,应用load载入和显示信息第一页的全部行。 //假如特定了主要参数,它将替代'queryParams'特性。一般能够根据传送一些主要参数实行一次查寻,根据启用这一方式会往上面url特定的action去推送恳求,从网络服务器载入新数据信息。 $('#dg').datagrid('load',{ type: value }); }, prompt:'请键入检索重要字' });load方式能够载入显示信息第一页的全部行,它有一个主要参数,假如特定了,便会去携带么的queryParams,不然默认设置传送上边的queryParams特定的主要参数,大家在这里里将type设定成value的值,即客户键入的查寻重要字,随后传入action,后台管理依据客户键入的value在数据信息库文件搜索,并回到给前台接待。实行結果以下:
那样我便进行了检索的作用了,较为简易。
3. DataGrid类型删掉的完成
如今大家来完成删掉作用,从上边的jsp中能看出,删掉前分辨客户有木有选定某条纪录,假如沒有则给客户一个提醒,假如有选定,则弹出来对话框让客户确定,假如为真,则实行删掉作用。有一个关键点要留意下,假如要想一次性删掉好几条纪录,那麼上边的singleSelect特性要设定成false。
最先,大家把上边query.jsp中删掉一部分的编码填补完,见下边:
JavaScript编码 { iconCls: 'icon-remove', text:'删掉类型', handler: function(){ //分辨是不是有选定行纪录,应用getSelections获得选定的全部行 var rows = $( #dg ).datagrid( getSelections ); //回到被选定的行,假如沒有一切行被选定,则回到空数字能量数组 if(rows.length == 0) { //弹出来提醒信息内容 $.messager.show({ //英语的语法相近于java中的静态数据方式,立即目标启用 title:'不正确提醒', msg:'最少应选择一条纪录', timeout:2000, showType:'slide', }); } else { //提醒是不是确定删掉,假如确定则实行删掉的逻辑性 $.messager.confirm('删掉确实认会话框', '您明确要删掉该项吗?', function(r){ if (r){ //1. 从获得的纪录中获得相对的的id,拼凑id的值,随后推送后台管理1,2,3,4 var ids = ; for(var i = 0; i rows.length; i ++) { ids += rows[i].id + , ; } ids = ids.substr(0, ids.lastIndexOf( , )); //2. 推送ajax恳求 $.post( category_deleteByIds.action ,{ids:ids},function(result){ if(result == true ) { //将不久选定的纪录删掉,否则会危害后边升级的实际操作 $( #dg ).datagrid( uncheckAll ); //更新当今页,查寻的情况下大家用的是load,更新第一页,reload是更新当今页 $( #dg ).datagrid( reload );//没有主要参数默认设置为上边的queryParams } else { $.messager.show({ title:'删掉出现异常', msg:'删掉不成功,请查验实际操作', timeout:2000, showType:'slide', }); } }, text ); } }); } } }假如客户挑选删掉,最先会弹出来一个会话框,当客户明确要删掉后,大家最先要获得客户所启用的产品的id,将这种id拼凑成一字符串,随后向后台管理推送ajax恳求,$.post中的第一个主要参数是推送到哪个action,第二个主要参数是推送的主要参数,第三个主要参数是回调函数涵数,即删掉取得成功后实行该涵数里边的方式,该涵数的主要参数result是以后台管理传回来的,第四个主要参数会有可无,是回到数据信息的种类。大家关键看一下$.post中的內容,当后台管理回到一个 true 表明删掉取得成功了,那麼大家启用DataGrid里边的reload方式再次更新网页页面,reload和前边查寻时要的load是一样的,不一样的地区取决于reload更新后滞留在当今网页页面,而load则显示信息第一页。
好啦,前台接待网页页面一部分写好啦,接下去进行后台管理的相对方式,最先在categoryService中加上deleteByIds方式,并在实际上现类categoryServceImpl中完成该方式:
Java编码 //categoryService插口 public interface CategoryService extends BaseService Category { //查寻类型信息内容,联级管理方法员 public List Category &ount(String type, int page, int size); //应用类型的名字查寻 //依据重要字查寻总纪录数 public Long getCount(String type); //依据ids删掉好几条纪录 public void deleteByIds(String ids); } //categoryServiceImpl完成类 @SuppressWarnings( unchecked ) @Service( categoryService ) public class CategoryServiceImpl extends BaseServiceImpl Category implements CategoryService { //别的方式省去不写了 能够参考前边的相对章节目录內容 @Override public void deleteByIds(String ids) { String hql = delete from Category c where c.id in ( + ids + ) ; getSession().createQuery(hql).executeUpdate(); } }写好啦Service一部分,接下去刚开始写Action一部分了。由于大家要获得前台接待传进去的ids数据信息,因此在action中得有一个完成了get和set方式的自变量来接受这一数据信息,此外,大家要将結果发送给前台接待,前边章节目录中大家做联级查寻的情况下,应用的方式是struts把查寻的結果数据信息装包成json文件格式发送给前台接待,因此必须一个Map,随后将根据配备文档中的配备,将Map变换成json文件格式。这儿大家传入前台接待的数据信息较为简易,入股投资删掉取得成功大家传一个 true 就可以,因此无需装包成json文件格式,大家根据流的方式去传输,大道理和前边的一样,总统大家得有一个流的目标去储存这一 true 的字节数,随后根据配备,将这一目标根据广为流传到前台接待。这2个目标大家還是写在BaseAction中,以下:
Java编码 @Controller( baseAction ) @Scope( prototype ) public class BaseAction T extends ActionSupport implements RequestAware,SessionAware,ApplicationAware,ModelDriven T { //获得要删掉的ids,要有get和set方式 //流是用于想前台接待回到数据信息的,这一数据信息是让struts获得的,随后根据流的方式传入前台接待,因此完成get方式就可以 protected String ids; protected InputStream inputStream; //下边省去 }相匹配的CategoryAction中的方式以下:
Java编码 @Controller( categoryAction ) @Scope( prototype ) public class CategoryAction extends BaseAction Category { public String&ount() { //略 } public String deleteByIds() { System.out.println(ids); categoryService.deleteByIds(ids); //假如删掉取得成功便会向下实行,大家将 true 以流的方式发送给前台接待 inputStream = new ByteArrayInputStream( true .getBytes()); //将 true 的字节数存到流inputStream中 return stream ; } }接下去看struts.xml中相对的配备:
XML/HTML编码 struts constant name= struts.devMode value= true / package name= shop extends= json-default !-- jason-default承继了struts-default -- global-results result name= aindex /WEB-INF/ /result /global-results !-- class相匹配的是Spring中配备该Action的id值,由于要交到Spring管理方法 -- action name= category_* > 那样大家就搞好了删掉的实际操作了,看一下实际效果:检测取得成功,大家还可以一次性挑选多种去删掉,到此,删掉作用做了了。
SSH电子商务新项目实战演练之七:Struts2和Json的融合 (:47)
SSH电子商务新项目实战演练之六:根据DataGrid的数据信息显示信息 (:19)
SSH电子商务新项目实战演练之五:进行数据信息库的联级查寻和分页查询 (:38)
SSH电子商务新项目实战演练之四:EasyUI莱单的完成 (:59)
SSH电子商务新项目实战演练之三:应用EasyUI构建后台管理网页页面架构 (:9)
SSH电子商务新项目实战演练之二:基本删改查改、Service和Action的提取及其应用注释更换xml (:14)
SSH电子商务新项目实战演练之一:融合Struts2、Hibernate和Spring (:3)
Hibernate下openSession和getCurrentSession获得的联接与事务管理的关联 (:56)
深层次浅出SINGLETON单例设计方案方式 (:50)
怎样处理Chrome中网页页面的运行内存泄漏难题 (:15)
网页链接(选填)
认证(*)
文章正文(*)(留言板留言最多篇幅:1000)
记牢我,下一次回应时无需再次键入本人信息内容