It worked!! Thanks again. On Thursday, October 25, 2012 10:49:15 AM UTC-5, Paolo Caruccio wrote: > > 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? >>>>>>> >>>>>>>
--