easyui datagrid 行右键 动态获取并生成toolbar 按钮


 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;

 

posted @ 2013-03-25 15:35  少爵  阅读(7379)  评论(9编辑  收藏  举报