给jqGrid数据行添加修改和删除操作链接

我这里用的不是jqGrid的自带的编辑和删除操作,我已经把分页导航栏下的编辑,删除,搜索都取消掉了,就是这句$("#list1").navGrid("#pager1",{edit:false,del:false, search:false}), 然后在数据加载完成后,给每行添加了 修改和删除链接

jqGrid完成的事件是gridComplete:function(){}(可以理解为数据都准备好了), 因为从数据库获取到的json数据没有带修改和删除两项,所以在之后的处理就是,在gridComplete事件中循环为每一行添加这两个链接,并且都给他们加上了onclick事件。先看截图:

修改的操作使用了jquery ui 的 dialog弹窗, 运行效果如下:(图上弹出的alert框是我点击确定按钮后弹出的,也就是说要修改数据,在这个确定按钮事件中进行)

页面代码 :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>jqGrid的JSON数据显示</title>
    <style type="text/css">
        body{font-size:12px;}
    </style>
    <link href="../css/redmond/jquery-ui-1.8.14.custom.css" rel="Stylesheet" />
    <link href="../css/ui.jqgrid.css" rel="Stylesheet" />
    <script type="text/javascript" src="../js/jquery-1.6.2.min.js"></script>
    <script type="text/javascript" src="../js/jquery-ui-1.8.14.custom.min.js"></script>
    <script type="text/javascript" src="../js/grid.locale-cn.js"></script>
    <script type="text/javascript" src="../js/jquery.jqGrid.min.js"></script>
    <script type="text/javascript">
        function Modify(id) {   //单击修改链接的操作         
            var model = jQuery("#list1").jqGrid('getRowData', id);
            //alert(model.Id);
            $("#txtCityCode").val(model.Code);
            $("#txtCityName").val(model.Name);
            $("#txtFID").val(model.Fid);
            $("#modifyform").dialog({
                height:230,
                width:400,
                resizable:false,
                modal:true,  //这里就是控制弹出为模态
                buttons:{
                    "确定":function(){                    
                        alert("在这里对数据进行修改!");
                        $(this).dialog("close");
                    },
                    "取消":function(){$(this).dialog("close");}
                }
            });
        }
        function Delete(id) { //单击删除链接的操作    
            alert("在这里执行异步删除操作,此时点击了id为 "+id+" 的行!");
        }
        $(document).ready(function(){
            $("#list1").jqGrid({
                url:'JsonDataHandler2.aspx',
                datatype:"json",
                mtype:'GET',
                height:200,
                colNames:['编号','城市编号','城市名称','所属省份编号','修改','删除'],  //注意在colNames和colModel中都不要忘记加修改和删除这两列
                colModel:[
                    {name:'Id',index:'Id',width:55},
                    {name:'Code',index:'Code',width:100},
                    {name:'Name',index:'Name',width:180, sortable:false},
                    {name:'Fid',index:'Fid',width:180},
                    {name:'Modify',index:'Id',width:80,align:"center",sortable:false},
                    {name:'Delete',index:'Id',width:80,align:'center',sortable:false}
                ],
                //autowidth:true,
                jsonReader:{  
                    page:"page",
                    total:"total",
                    repeatitems:false,
                    id:"Id"
                },
                pager:jQuery('#pager1'),
                rowNum:20,
                rowList:[10,20,30],
                sortname:'Id',
                sortorder:'asc',
                viewrecords:true,
                caption:'jqGrid使用JSON数据测试',
                gridComplete:function(){  //在此事件中循环为每一行添加修改和删除链接
                    var ids=jQuery("#list1").jqGrid('getDataIDs');
                    for(var i=0; i<ids.length; i++){
                        var id=ids[i];   
                        modify = "<a href='#' style='color:#f60' onclick='Modify(" + id + ")'>修改</a>";  //这里的onclick就是调用了上面的javascript函数 Modify(id)
                        del = "<a href='#'  style='color:#f60' onclick='Delete(" + id + ")' >删除</a>";   
                        jQuery("#list1").jqGrid('setRowData', ids[i], { Modify: modify, Delete: del });
                    }
                }
            }).navGrid("#pager1",{edit:false,add:false,del:false,search:false});
            
        });
    </script>
</head>
<body>
<table id="list1"></table>
<div id="pager1"></div>
<div id="modifyform" title="修改城市资料" style="display:none;">  <!-- 该Div的作用就是当点击jqGrid表格中的修改链接时弹出的dialog, 注意是在上面的Modify(id)函数中给下面的input赋值 -->
    <p>城市编号:<input type="text" id="txtCityCode" /></p>
    <p>城市名称:<input type="text" id="txtCityName" /></p>
    <p>所属省份编号:<input type="text" id="txtFID" /></p>
</div>
</body>
</html>

转载于:https://my.oschina.net/i33/blog/62595

可以使用 jqGrid 自带的 formatter 属性来实现操作列。首先,在 colModel 中定义操作列的属性,如下: ``` { name: 'operation', index: 'operation', width: 80, sortable: false, formatter: function(_, options, row) { var editBtn = '<button type="button" class="btn btn-xs btn-default editBtn" data-rowid="' + options.rowId + '">编辑</button>'; var delBtn = '<button type="button" class="btn btn-xs btn-danger delBtn" data-rowid="' + options.rowId + '">删除</button>'; return editBtn + ' ' + delBtn; } } ``` 其中,formatter 函数会接收三个参数: 1. `_`: 无意义 2. `options`: 当前单元格的一些属性,包括 rowId( ID)、colModel(列模型)、pos(当前单元格的左上角坐标)等等 3. `row`: 当前数据对象 在 formatter 中,我们可以根据 options 和 row 的值来自定义单元格的显示内容,返回一个 HTML 字符串即可。 然后,在 gridComplete 事件中为操作列的按钮绑定事件,如下: ``` gridComplete: function() { var $grid = $(this); // 编辑按钮点击事件 $grid.find('.editBtn').on('click', function() { var rowId = $(this).data('rowid'); var rowData = $grid.jqGrid('getRowData', rowId); // TODO:显示编辑对话框,并根据 rowData 的值填充表单 }); // 删除按钮点击事件 $grid.find('.delBtn').on('click', function() { var rowId = $(this).data('rowid'); $grid.jqGrid('delRowData', rowId); }); } ``` 在 gridComplete 中,我们可以利用 jqGrid 对象获取当前表格的 DOM 元素,并对其中的操作按钮绑定点击事件。需要注意的是,因为 jqGrid 会对表格的 DOM 结构进修改,所以绑定事件时需要使用 $(this) 而非常规的选择器。 以上代码就可以实现在 jqGrid添加删除按钮了。如果需要修改按钮样式,可以在 formatter 函数中调整 HTML 字符串;如果需要添加更多的操作按钮,可在 formatter 和 gridComplete 中添加对应的代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值