This happens because the url has arguments. please try with:
{{extend 'layout.html'}} {{ if not request.args: 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 pass }} {{=grid}} Of course if the page with the grid has arguments in url you have to change the first condition and check the acceptable cases. Il giorno giovedì 25 ottobre 2012 16:20:45 UTC+2, Omi Chiba ha scritto: > > 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? >>>>>> >>>>>> --