![](https://images0.cnblogs.com/blog/298924/201303/25153434-a909ecbdb4ee48d1992e78059341ae5c.jpg)
1 var createGridRowContextMenu = function(e, rowIndex, rowData) {
2 e.preventDefault();
3 var grid = $(this);/* grid本身 */
4 var rowContextMenu = this.rowContextMenu;/* grid上的列头菜单对象 */
5 grid.datagrid('unselectAll').datagrid('selectRow', rowIndex);
6 if (!rowContextMenu) {
7 var tmenu = $('<div style="width:100px;"></div>').appendTo('body');
8 var toolbar = grid.datagrid('getToolbar');
9 var filedHTML = $('<div iconCls="icon-columns"></div>');
10 var span = $('<span>翻页控制</span>');
11 var spdiv = $('<div></div>');
12 for ( var i = 0; i < toolbar.length; i++) {
13 var btn = $(toolbar[i]).linkbutton('options');
14 var btnElement = $(toolbar[i]).linkbutton();
15 var c = $(btnElement).attr("onclick");
16 $("<div data-options=iconCls:'"+btn.iconCls+"',disabled:"+btn.disabled+" fire='" + c + "',/>").html(btn.text).appendTo(tmenu);
17 //$('<div data-options=iconCls:"'+btn.iconCls+'",onclick:'+$(btnElement).attr("onclick")+',disabled:'+btn.disabled+'/>').html(btn.text).appendTo(tmenu);
18 }
19 spdiv.append('<div iconCls="pagination-first">首页</div>');
20 spdiv.append('<div iconCls="pagination-prev">上一页</div>');
21 spdiv.append('<div iconCls="pagination-next">下一页</div>');
22 spdiv.append('<div iconCls="pagination-last">末页</div>');
23 span.appendTo(filedHTML);
24 spdiv.appendTo(filedHTML);
25 filedHTML.appendTo(tmenu);
26 rowContextMenu = this.rowContextMenu = tmenu.menu({
27 onClick : function(item) {
28 var fire = $(item.target).attr('fire');
29 if(fire){
30 new Function(fire)(); //eval(fire); eval 也是可行的;
31 }
32 var pager = grid.datagrid('getPager').pagination('options'); //拿到pager
33 var pagination = $(item.target).attr('iconCls');
34 var pageNum = 0
35 var page = pager.total / pager.pageSize; //总行书 / 每页显示行数 = 总页数
36 page = Math.ceil(page)
37 if(pagination == 'pagination-first'){
38 pageNum = 1;
39 }
40 if(pagination == 'pagination-prev'){
41 pageNum = pager.pageNumber - 1;
42 }
43 if(pagination == 'pagination-next'){
44 pageNum = pager.pageNumber + 1;
45 }
46 if(pagination == 'pagination-last'){
47 pageNum = page;
48 }
49 grid.datagrid('getPager').pagination('select',pageNum);
50 }
51 });
52 }else{
53
54 }
55 rowContextMenu.menu('show', {
56 left : e.pageX,
57 top : e.pageY
58 });
59 var pager = grid.datagrid('getPager').pagination('options'); //拿到pager
60 var itemFirst = rowContextMenu.menu('findItem','首页');
61 var itemPrev = rowContextMenu.menu('findItem','上一页');
62 var itemNext = rowContextMenu.menu('findItem','下一页');
63 var itemLast = rowContextMenu.menu('findItem','末页');
64 rowContextMenu.menu('disableItem',itemFirst.target);
65 rowContextMenu.menu('disableItem',itemPrev.target);
66 rowContextMenu.menu('disableItem',itemNext.target);
67 rowContextMenu.menu('disableItem',itemLast.target);
68 var page = pager.total / pager.pageSize; //总行书 / 每页显示行数 = 总页数
69 //if(page < 1){ //如果页数小于0
70 //那么页数 = 1 page = 1;
71 //}
72 page = Math.ceil(page)
73 if(page < 1)
74 page=page+1;
75 if(1 < pager.pageNumber && pager.pageNumber < page){
76 rowContextMenu.menu('enableItem',itemFirst.target);
77 rowContextMenu.menu('enableItem',itemPrev.target);
78 rowContextMenu.menu('enableItem',itemNext.target);
79 rowContextMenu.menu('enableItem',itemLast.target);
80 }
81 if(page == pager.pageNumber && pager.pageNumber != 1){
82 rowContextMenu.menu('enableItem',itemFirst.target);
83 rowContextMenu.menu('enableItem',itemPrev.target);
84 }
85 if(pager.pageNumber == 1 && page != 1){
86 rowContextMenu.menu('enableItem',itemNext.target);
87 rowContextMenu.menu('enableItem',itemLast.target);
88 }
89 };
90 $.fn.datagrid.defaults.onRowContextMenu = createGridRowContextMenu;
91 $.fn.treegrid.defaults.onRowContextMenu = createGridRowContextMenu;