web项目 easyui-datagrid开发实践

一,引言

工作的需要,做了3年的wpf(mvvm)……,又因为项目的需求,回归到web的开发。

■  3 years ago,vue是我三年前没用过的玩意儿。

■  3 years ago,bootstrap组件没现在成熟。

■  3 years ago,font awesome的普及度没有现在高。

■  3 years ago,ui组件的选择也没有现在多。

二,项目的前端(easyui模板订制)

整个项目采用了oracle  + dapper  + castle + mvc + easyui的技术结合,本篇博客重点介绍easyui。

easyui的默认风格看久了很容易产生视觉疲劳,在这个项目中,我个性化订制风格。

订制easyui模板的工作量是挺大的,我用了一个偷懒的方法,花了几百块钱在网上买了几个easyui的皮肤链接然后对这些皮肤,进行优化和重构。

money比较紧的同学,可以去下载easyui的免费皮肤。

三,easyui-datagrid的基本使用:

1,加载数据

a,通过post,url的方法向后端请求数据,如图所示:

View Code

b,先定义好了datagrid的属性以及列,再通过loadData的方法设置datagrid的数据

复制代码
$('#Detail').datagrid({
    loadMsg: '@CommonResource.Processing',
    toolbar: '#tb',
    width: "100%",
    height: "100%",
    //data: [],
    rownumbers: true,
    autoRowHeight: false,
    fit: true,
    fitColumns: true,
    striped: true,
    singleSelect: true,
    collapsible: false,
    pagination: false,
    queryParams: {  },
    columns: [[
        { field: 'Country_Name', title: '国家名称', width: 100, sortable: false },
        { field: 'Item_Number', title: '物料编码', width: 100, sortable: false },
    ]],
});
复制代码

 

var returnData = JSON.parse(response.data);
$('#Detail').datagrid("loadData", returnData);

2,合并单元格

有时候用户需要如下图的效果

可以在datagrid的onLoadSuccess事件里增加如下代码:

复制代码
onLoadSuccess: function (data) {
    //var opts = $('#List').datagrid('getColumnFields');
    var opts = new Array("Item_Number", "Country_Name", "Item_Desc", "Item_Desc_En", "Item_Type", "Unit", "Hs_Code", "Destination_Code", "Status", "Remark", "Create_User", "Create_Date");
    var rowsCount = data.rows.length;
    var mark = 1;
    for (var j = 1; j < rowsCount; j++)
    {
        var preCellVal = data.rows[j - 1]["Material_Id"];
        var currentCellVal = data.rows[j]["Material_Id"];
        if (preCellVal == currentCellVal) {
            mark += 1;
            for (var c = 0; c < opts.length; c++) {
                var columnName = opts[c];
                $(this).datagrid('mergeCells', {
                    field: columnName,
                    index: j + 1 - mark,
                    rowspan: mark
                });
            }
        }
        else {
            mark = 1;
        }
    }
},
复制代码

3,行,列变色

针对这样的行,列变色效果:

a,行变色

View Code

b,列变色

View Code

4,为datagrid添加工具条

如下效果的工具条,是通过datagrid的 toolbar 属性来指定,要留意的是toolbar的控件名称需要加上#符号。

html代码:

复制代码
<div id="tb">
    <a id='condition' href='#' class='btn btn-default more'><i class='fa  fa-ellipsis-v'></i>&nbsp;&nbsp;查询条件</a>
    @Html.ToolButton(string.Format(@"<a id='btnCreate' href='#' class='btn btn-default'><i class='fa fa-plus'></i>&nbsp;&nbsp;{0}</a>", @CommonResource.Add), ActionCode.Create)
    @Html.ToolButton(string.Format(@"<a id='btnEdit' href='#' class='btn btn-default'><i class='fa fa-pencil'></i>&nbsp;&nbsp;{0}</a>", @CommonResource.Edit), ActionCode.Edit)
    @Html.ToolButton(string.Format(@"<a id='btnDelete' data-content='Delete 1' href='#' class='btn btn-primary'><i class='fa fa-trash'></i>&nbsp;&nbsp;{0}</a>", @CommonResource.Delete), ActionCode.Delete)
</div>
复制代码

js代码:

 

5,做增,删,改操作

a,为datagrid增加一行

复制代码
function addCallBack(data) {
    $('#List').datagrid('insertRow', {
        index: 0,
        row: data,
    });
    layer.msg('@CommonResource.AddSuccess', { icon: 1, time: 1000 });
}
复制代码

b,为datagrid编辑一行

复制代码
function editCallBack(data) {
    var selectData = $('#List').datagrid('getSelected');
    var selectIndex = $('#List').datagrid('getRowIndex', selectData);
    $('#List').datagrid('updateRow', {
        index: selectIndex,
        row: data,
    });
    layer.msg('@CommonResource.ModifySuccess', { icon: 1, time: 1000 });
}
复制代码

c,为datagrid删除一行

复制代码
$("#btnLineDelete").click(function () {
    var row = $('#Detail').treegrid('getSelected');
    if (row != null) {
        var rowIndex = $('#Detail').datagrid('getRowIndex', row);
        $('#Detail').datagrid('deleteRow', rowIndex);
        layer.msg('@CommonResource.DeleteSuccess', { icon: 1, time: 1000 });
    }
    else {
        layer.msg('@CommonResource.Noselectedrecord', { icon: 2, time: 1000 });
    }
});
复制代码


d,treegrid的操作方法略有区别,附上源码:

View Code

6,编辑单元格

 

具体代码实现

View Code

7,重置datagrid布局  $('#List').datagrid("resize");

复制代码
$(function () {
    $(".more").click(function () {
        $(this).closest(".conditions").siblings().toggleClass("hide");
        $('#List').datagrid("resize");
    });
})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值