easy-ui的datagrid排序

两种
1.本地排序

$(function(){
            $('#MHManagementDataGrid').datagrid({
            url: "${pageContext.request.contextPath}/qurey_all_member.do",
            rownumbers:true,//序列号,显示在第一列
            remoteSort:false,
            width: '970',
            height: '420',
            onBeforeSelect:function(){//单继不选中
                return false;
                },
            pagination:true,//分页条
            pageSize:10,//每页显示的数目
            pagelist:[10,20,30,40],//选择每页加载的数目,这个要和pagesize的数目成倍数
            fitColumns:false,//自动改变行列比例,把表格撑起来,显得好看点
            //这是每一列定义的内容,field最重要,一定要和返回的数据名称一致,表格就是靠这个名字自动填充数据的
            columns:[[
                {field:'id',title:'序号',width:40,sortable:true},
                {field:'member_num',title:'会员号码',width:120},
                {field:'member_name',title:'会员姓名',width:80},
                {field:'member_phone',title:'会员电话',width:120},
                {field:'member_times',title:'登记次数',width:40},
                {field:'remarks',title:'备注',width:100},
                {field:'member_start',title:'开始时间',width:130},
                {field:'member_end',title:'结束时间',width:130},

配置remoteSort:false和sortable:true
2.服务器排序

$(function(){
            $('#MHManagementDataGrid').datagrid({
            url: "${pageContext.request.contextPath}/qurey_all_member.do",
            rownumbers:true,//序列号,显示在第一列
            remoteSort:true,
            width: '970',
            height: '420',
            onBeforeSelect:function(){//单继不选中
                return false;
                },
            pagination:true,//分页条
            pageSize:10,//每页显示的数目
            pagelist:[10,20,30,40],//选择每页加载的数目,这个要和pagesize的数目成倍数
            fitColumns:false,//自动改变行列比例,把表格撑起来,显得好看点
            //这是每一列定义的内容,field最重要,一定要和返回的数据名称一致,表格就是靠这个名字自动填充数据的
            columns:[[
                {field:'id',title:'序号',width:40,sortable:true},
                {field:'member_num',title:'会员号码',width:120},
                {field:'member_name',title:'会员姓名',width:80},
                {field:'member_phone',title:'会员电话',width:120},
                {field:'member_times',title:'登记次数',width:40},
                {field:'remarks',title:'备注',width:100},
                {field:'member_start',title:'开始时间',width:130},
                {field:'member_end',title:'结束时间',width:130},

配置remoteSort:true和sortable:true
前端自动传值排序参数给后端
后台通过获取要排列的字段以及order查询数据库时进行排序
sort-要排列的字段
order-asc/desc排序顺序

String sort= request.getParameter("sort");
String order= request.getParameter("order");
### 关于 DataGrid 排序功能的实现 为了在 DataGrid 中实现排序功能,通常需要完成以下几个方面的配置: #### 1. 设置 `sortable` 属性 如果希望某些列能够支持排序,则需要将这些列的 `sortable` 属性设置为 `true`。只有设置了该属性的列才能响应用户的排序操作。 以下是启用特定列排序的一个简单示例: ```javascript $('#tt').datagrid({ title: 'Sortable Column', width: 550, height: 250, url: '/demo4/data/getItems', columns: [[ { field: 'itemid', title: 'Item ID', width: 80, sortable: true }, { field: 'productid', title: 'Product ID', width: 80, sortable: true }, { field: 'listprice', title: 'List Price', width: 80, align: 'right', sortable: true }, { field: 'unitcost', title: 'Unit Cost', width: 80, align: 'right', sortable: true }, { field: 'attr1', title: 'Attribute', width: 100 }, // 不可排序 { field: 'status', title: 'Status', width: 60 } // 不可排序 ]], pagination: true, sortName: 'itemid', // 默认排序字段 sortOrder: 'asc' // 默认排序顺序 }); ``` 此代码片段展示了如何通过设置 `sortable: true` 来允许指定列参与排序[^2]。 --- #### 2. 绑定排序事件 除了简单的前端展示外,还需要处理用户触发的排序行为,并将其传递给后端逻辑以重新加载数据。这可以通过绑定 `onSortColumn` 事件来实现。 以下是一个完整的绑定排序事件的例子: ```javascript $("#gridlist").datagrid({ onSortColumn: function (sort, order) { loadlistgrid(sort, order); } }); ``` 在此代码中,每当用户点击表头进行排序时,都会调用自定义函数 `loadlistgrid(sort, order)` 并传入当前排序字段 (`sort`) 和排序方向 (`order`) 的值[^1]。 --- #### 3. 处理模板列的排序 对于使用了复杂单元格渲染器(如模板列)的情况,也需要确保其具备排序能力。例如,在 WPF 或 Silverlight 应用程序中的 `DataGridTemplateColumn` 可能会涉及额外的绑定逻辑。 下面是一段针对模板列的排序实现方式: ```xml <sdk:DataGrid.Columns> <sdk:DataGridTextColumn Header="编号" Binding="{Binding ID}" /> <sdk:DataGridTextColumn Header="名字" Binding="{Binding Name}" /> <sdk:DataGridTemplateColumn Header="Age"> <sdk:DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding Age}" /> </DataTemplate> </sdk:DataGridTemplateColumn.CellTemplate> </sdk:DataGridTemplateColumn> <sdk:DataGridTextColumn Header="Email" Binding="{Binding Email}" /> </sdk:DataGrid.Columns> ``` 尽管此处未显式声明 `sortable=true`,但在实际开发过程中可能仍需手动调整绑定路径或其他细节以便正确识别并应用排序规则[^3]。 --- #### 4. 后台服务的支持 最后一点需要注意的是,前台仅负责发起请求;真正的排序动作发生在服务器侧。因此,必须设计好相应的接口参数接收机制以及数据库查询语句构建策略。 假设采用 ASP.NET MVC 架构编写后台部分,则大致流程如下所示: - 定义实体类表示返回的数据结构; - 创建控制器方法接受来自客户端提交过来的排序条件; - 调整 LINQ 查询或者 SQL 命令按照指定的方式排列记录集合。 具体而言,当接收到类似这样的 URL 请求 `/api/items?sort=itemid&order=desc` 之后,就可以解析其中携带的信息进而执行下一步骤的操作了[^4]。 --- ### 总结 综上所述,要成功实施基于 EasyUI Framework 下 Datagrid 控件所提供的动态排序特性,不仅要在 HTML 页面内部精心安排各项布局选项及其关联属性值设定工作,而且还要兼顾考虑前后两端交互过程里可能出现的各种状况因素影响下的兼容性和鲁棒性表现水平提升措施落实情况等方面的内容才行哦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值