![](http://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="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;