在第8节我们完成了查询和删除商品类别的功能,那么现在实现查询和删除商品的功能就很好做了,原理和第8节一模一样,只是修改一些参数,比如请求不同的action等。由于查询和删除商品不需要弹出新的UI窗口,所以我们只要完成完成query.jsp中相应的部分以及相应的后台即可。
1. 查询商品功能的实现
查询功能主要在查询框中实现,从上一节可知,查询框用的是一个text:"<input id='ss' name='serach' />",我们通过把普通的文本框转化为查询搜索文本框来实现,下面我们在query.jsp中添加相应部分的代码:
- $('#ss').searchbox({
-
- searcher:function(value,name){
-
-
- $('#dg').datagrid('load',{
- name: value
- });
-
- },
- prompt:'请输入搜索关键字'
- });
测试结果如下:
查询很简单,跟上一节load所有商品一样,只不过查询的时候参数设为用户输入的值,加载所有的时候参数设为空即可。
2. 删除商品功能的实现
接下来做删除商品功能,首先我们把query.jsp中相应部分的代码补全:
- {
- iconCls: 'icon-remove',
- text:'删除商品',
- handler: function(){
-
-
- var rows = $("#dg").datagrid("getSelections");
-
- if(rows.length == 0) {
-
- $.messager.show({
- title:'错误提示',
- msg:'至少要选择一条记录',
- timeout:2000,
- showType:'slide',
- });
- } else {
-
- $.messager.confirm('删除的确认对话框', '您确定要删除此项吗?', function(r){
- if (r){
-
- var ids = "";
- for(var i = 0; i < rows.length; i ++) {
- ids += rows[i].id + ",";
- }
- ids = ids.substr(0, ids.lastIndexOf(","));
-
- $.post("product_deleteByIds.action",{ids:ids},function(result){
- if(result == "true") {
-
- $("#dg").datagrid("uncheckAll");
-
- $("#dg").datagrid("reload");
- } else {
- $.messager.show({
- title:'删除异常',
- msg:'删除失败,请检查操作',
- timeout:2000,
- showType:'slide',
- });
- }
- },"text");
- }
- });
- }
- }
- }
从上面代码中可以看出,删除操作需要先选中至少一条记录,选中后,当确认删除时(即r为真),首先获取用户都勾选了哪些记录,将这些记录的id号拼接起来,然后想后台发送ajax请求,请求productAction中的deleteByIds方法,将拼接好的id作为参数带过去,如果删除成功,则返回一个字符串"true"到前台,然后前台将刚刚勾选记录清掉,以免影响后面更新操作,因为更新也要勾选记录,之后再刷新当前页,reload数据库所有商品信息。
流程很清楚明了,下面我们写后台程序,先从service层开始:
- public interface ProductService extends BaseService<Product> {
-
-
- public List<Product> queryJoinCategory(String type, int page, int size);
-
- public Long getCount(String type);
-
- public void deleteByIds(String ids);
- }
-
- @SuppressWarnings("unchecked")
- @Service("productService")
- public class ProductServiceImpl extends BaseServiceImpl<Product> implements ProductService {
-
-
- @Override
- public void deleteByIds(String ids) {
- String hql = "delete from Product p where p.id in (" + ids + ")";
- getSession().createQuery(hql).executeUpdate();
- }
-
- }
接下来完成productAction中的deleteByIds方法:
- @Controller("productAction")
- @Scope("prototype")
- public class ProductAction extends BaseAction<Product> {
-
-
-
- public String deleteByIds() {
- System.out.println(ids);
- productService.deleteByIds(ids);
-
- inputStream = new ByteArrayInputStream("true".getBytes());
- return "stream";
- }
- }
和之前删除商品类的思路相同,下面在struts.xml中配置:
- <action name="product_*" class="productAction" method="{1}">
-
- <result name="stream" type="stream">
- <param name="inputName">inputStream</param>
- </result>
- </action>
这样字符串"true"就通过流传到前台了,接收到说明删除成功。看一下效果:
测试成功,至此,商品的搜索和删除功能做完了。
(注:到最后我会提供整个项目的源码下载!欢迎大家收藏或关注)
相关阅读:http://blog.csdn.net/column/details/str2hiberspring.html_____________________________________________________________________________________________________________________________________________________
-----乐于分享,共同进步!
-----更多文章请看:http://blog.csdn.net/eson_15