zoukankan      html  css  js  c++  java
  • ASP.NET Zero--14.一个例子(7)商品分类管理-分类搜索及分页

    分类搜索实现

    1.添加搜索框

    打开Index视图,添加一个搜索框,代码如下:
    ...
    <div class="portlet light">
        <div class="portlet-title portlet-title-filter">
            <div class="inputs inputs-full-width">
                <div class="portlet-input">
                    <form>
                        <div class="input-group">
                            <input id="CategoriesTableFilter" class="form-control" placeholder="@L("SearchWithThreeDot")" type="text" value="@ViewBag.FilterText">
                            <span class="input-group-btn">
                                <button id="GetCategoriesButton" class="btn default" type="submit"><i class="icon-magnifier"></i></button>
                            </span>
                        </div>
                    </form>
                </div>
            </div>
        </div>
        <div class="portlet-body">
    ...
    保存,刷新页面,效果如下:

    2.搜索点击事件

    打开Index.js【..MyCompanyName.AbpZeroTemplate.WebAreasMpaViewsCategoryIndex.js】
    添加如下代码:
    //新建分类点击事件
            $('#CreateNewCategoryButton').click(function () {
                _createModal.open();
            });
            //搜索点击事件
            $('#GetCategoriesButton').click(function (e) {
                //取消事件的默认动作
                e.preventDefault();
                getCategories();
            });
    然后修改getCategories函数为如下:
    function getCategories(reload) {
                if (reload) {
                    _$categoriesTable.jtable('reload');
                } else {
                    _$categoriesTable.jtable('load', {
                        filter: $('#CategoriesTableFilter').val()
                    });
                }
            }

    3.创建Dto

    在CategoryAppDto下创建一个类GetCategoriesInput.cs
    【..MyCompanyName.AbpZeroTemplate.ApplicationCategoryAppDtoGetCategoriesInput.cs】
    代码如下:
    public class GetCategoriesInput : PagedAndSortedInputDto, IShouldNormalize
        {
            public string Filter { get; set; }
            public void Normalize()
            {
                if (string.IsNullOrEmpty(Sorting))
                {
                    Sorting = "Name";
                }
            }
        }

    4.修改方法

    打开文件ICategoryAppService
    【..MyCompanyName.AbpZeroTemplate.ApplicationCategoryAppICategoryAppService.cs】
    GetCategories方法修改为如下:
    PagedResultOutput<CategoryOutput> GetCategories(GetCategoriesInput input);
    对应的实现类CategoryAppService,修改GetCategories方法如下:
    public PagedResultOutput<CategoryOutput> GetCategories(GetCategoriesInput input)
            {
                //创建映射
                Mapper.CreateMap<Category, CategoryOutput>();
                var result=_categoryRepository.GetAll();
                if (!string.IsNullOrWhiteSpace(input.Filter))
                {
                    result=result.Where(a => a.Name.Contains(input.Filter));
                }
                int totalCount = result.Count();
                return new PagedResultOutput<CategoryOutput>(
                    totalCount,
                    Mapper.Map<List<CategoryOutput>>(result.ToList())
                    );
            }

    5.测试

    生成项目,刷新页面,搜索框输入字符进行查询
     

    表格分页实现

    由于上面已经实现了一些代码,分页实现起来相对简单,只要修改CategoryAppService类中的GetCategories方法即可,代码如下:
    public PagedResultOutput<CategoryOutput> GetCategories(GetCategoriesInput input)
            {
                //创建映射
                Mapper.CreateMap<Category, CategoryOutput>();
                var result=_categoryRepository.GetAll();
                if (!string.IsNullOrWhiteSpace(input.Filter))
                {
                    result=result.Where(a => a.Name.Contains(input.Filter));
                }
                int totalCount = result.Count();
                var list=result.OrderBy(input.Sorting).PageBy(input).ToList();//分页
                return new PagedResultOutput<CategoryOutput>(
                    totalCount,
                    Mapper.Map<List<CategoryOutput>>(list)
                    );
    
            }
    同时引用using System.Linq.Dynamic;
    以支持OrderBy传入string作为参数,这是一个扩展方法
    这里顺便把排序也完成了。
    点击列可实现排序
    至此,整个分类功能已经完成,可以正常使用,如果要求更高,可以对按钮进行权限控制,不同角色操作不同按钮,请继续下一篇:权限控制
  • 相关阅读:
    经济地理国情监测
    《城市轨道交通——产业关联理论与应用》读书笔记
    《区域经济学原理》读书笔记(上)
    《国家经济地理》杂志之第一期:探寻中国经济的“第四极”
    《地理空间分析——原理、技术与软件工具》读书笔记
    《国家经济地理》杂志第二期:再望万里海疆——走向海洋经济的中国“大航海时代”
    国家统计遥感项目、商业图盟与品牌地图的碎碎念
    关于城市规划中的投融资规划
    区域功能定位对北京人口总量及分布的影响
    《中国经济地理——经济体成因与地缘架构》读书笔记
  • 原文地址:https://www.cnblogs.com/shensigzs/p/6305795.html
Copyright © 2011-2022 走看看