I posted on this on my blog<http://ochiba77.blogspot.com/2012/10/web2py-grid-with-export-dropdown.html?showComment=1351174654911#c5334545878916593563> and someone pointed that it will get ticket when clicking View button. Do you know how to fix?
Problem looks like here. export_menu_links = original_export_menu.elements('a') 1. 2. 3. 4. 5. 6. Traceback (most recent call last): File "C:\web2py\gluon\restricted.py", line 209, in restricted exec ccode in environment File "C:\web2py\applications\grid\views\default/index.html", line 82, in <module> AttributeError: 'NoneType' object has no attribute 'elements' 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. pass response.write('\n\n <div class="', escape=False) response.write(middle_columns) response.write('">\n ', escape=False) response.write('\n ', escape=False) response.write('\r\n', escape=False) w2p_grid_tbl = grid.element('table') if w2p_grid_tbl: original_export_menu = grid.element('div.w2p_export_menu') export_menu_links = original_export_menu.elements('a') export_menu_items = [] for link in export_menu_links: item = LI(link) export_menu_items.append(item) pass new_export_menu = DIV( A( T('Exports'), SPAN(_class='caret'), _href='#', _class='btn dropdown-toggle', On Tuesday, October 23, 2012 8:38:54 AM UTC-5, Omi Chiba wrote: > > It works! Thank you for sharing your code. > > > > On Monday, October 22, 2012 5:00:19 PM UTC-5, Paolo Caruccio wrote: >> >> My fault. I extrapoled the code from more complex one. >> >> Try this: >> >> {{extend 'layout.html'}} >> {{ >> w2p_grid_tbl = grid.element('table') >> if w2p_grid_tbl: >> original_export_menu = grid.element('div.w2p_export_menu') >> export_menu_links = original_export_menu.elements('a') >> export_menu_items = [] >> for link in export_menu_links: >> item = LI(link) >> export_menu_items.append(item) >> pass >> new_export_menu = DIV( >> A( T('Exports'), >> SPAN(_class='caret'), >> _href='#', >> _class='btn dropdown-toggle', >> **{'_data-toggle':"dropdown"} >> ), >> UL(*export_menu_items, >> _class='dropdown-menu' >> ), >> _class='w2p_export_menu btn-group' >> ) >> export_menu = grid.element('div.w2p_export_menu',replace=new_export_menu >> ) >> pass >> }} >> >> {{=grid}} >> >> Of course you could modify the DOM directly in the controller. >> >> >> >> Il giorno lunedì 22 ottobre 2012 22:56:48 UTC+2, Omi Chiba ha scritto: >>> >>> Wow! This is exactly what I wanted. I hope this will be the default >>> layout for grid. >>> >>> I copy and pasted your code between {{extend 'layout.html'}} and >>> {{=gird}}, then export labels are now disappeard... >>> Maybe you should check your code with the latest (2.1.1). >>> >>> {{left_sidebar_enabled,right_sidebar_enabled=False,('message' in >>> globals())}} >>> {{extend 'layout.html'}} >>> {{ >>> w2p_grid_tbl = grid.element('table') >>> if w2p_grid_tbl: >>> export_menu = grid.element('div.w2p_export_menu') >>> export_menu_links = export_menu.elements('a') >>> export_menu_items = [] >>> for link in export_menu_links: >>> item = LI(link) >>> export_menu_items.append(item) >>> pass >>> export_menu = grid.element('div.w2p_export_menu',replace=None) >>> new_export_menu = DIV( >>> A( T('Exports'), >>> SPAN(_class='caret'), >>> _href='#', >>> _class='btn dropdown-toggle', >>> **{'_data-toggle':"dropdown"} >>> ), >>> UL(*export_menu_items, >>> _class='dropdown-menu' >>> ), >>> _class='w2p_export_menu btn-group' >>> ) >>> pass >>> }} >>> >>> {{=grid}} >>> >>> >>> >>> >>> On Monday, October 22, 2012 2:10:53 PM UTC-5, Paolo Caruccio wrote: >>>> >>>> For grid export menu I'm happy with below method >>>> >>>> In the views/*.html file where is your grid put on top (just below >>>> extend layout command) the following code: >>>> >>>> {{ >>>> w2p_grid_tbl = grid.element('table') >>>> if w2p_grid_tbl: >>>> export_menu = grid.element('div.w2p_export_menu') >>>> export_menu_links = export_menu.elements('a') >>>> export_menu_items = [] >>>> for link in export_menu_links: >>>> item = LI(link) >>>> export_menu_items.append(item) >>>> pass >>>> export_menu = grid.element('div.w2p_export_menu',replace=None) >>>> new_export_menu = DIV( >>>> A( T('Exports'), >>>> SPAN(_class='caret'), >>>> _href='#', >>>> _class='btn dropdown-toggle', >>>> **{'_data-toggle':"dropdown"} >>>> ), >>>> UL(*export_menu_items, >>>> _class='dropdown-menu' >>>> ), >>>> _class='w2p_export_menu btn-group' >>>> ) >>>> pass >>>> }} >>>> >>>> In the attached picture you can see how the exports menu is rendered >>>> using css bootstrap framework. >>>> >>>> The method is based on Server-side DOM and parsing ( >>>> http://web2py.com/books/default/chapter/29/05#Server-side-DOM-and-parsing) >>>> and it uses the elements argument "replace" (new beatiful and powerful - >>>> in >>>> my opinion - feature). For reference you could read >>>> https://groups.google.com/forum/?fromgroups=#!topic/web2py/fbYZXoIOkCY >>>> >>>> I hope this will help you. >>>> >>>> >>>> >>>> Il giorno lunedì 22 ottobre 2012 17:15:37 UTC+2, Omi Chiba ha scritto: >>>>> >>>>> New export function on grid has many choices but I need to keep the >>>>> old format. (Export button for csv) because... >>>>> >>>>> - I'm using the gird for users (Maybe this format is good for us but >>>>> not users.) >>>>> - Current export options layout is not pretty (I prefer button with >>>>> dropdown list) >>>>> - I don't want users to see hidden columns >>>>> >>>>> Is there any option available for me? >>>>> >>>>> --