Looks like the new datatables.net v1.10 has a new API so there are now probably better ways to do this than I showed.
On Monday, June 23, 2014 4:51:53 AM UTC-5, Tomeu Roig wrote: > > Thanks Brian > > El lunes, 23 de junio de 2014 03:56:32 UTC+2, Brian M escribió: >> >> Tomeu, >> >> At the moment I'm just letting datatables.net enhance a plain html table >> for me. One of these days I'll probably get around to giving it a json >> datasource but so far it hasn't been a priority for my usage. >> >> As a bonus, here's some of how to update the datatables.net display >> after using the edit dialog. (So just the edited record's row in the >> datatable gets updated rather than a full page refresh) >> >> In controller >> #after you'd done the necessary DB updates... >> >> #tell browser to close the jqueryui dialog >> response.js =XML( '$("#edit_dialog").dialog("close");') >> >> #prepare for display update >> edit_icon = IMG(_src=URL(c="static",f="images/page_white_edit.png"), _alt >> ="Click to edit") >> >> #prep javascript code for datatables.net to update the existing row's >> display >> #basically just a json list of td values >> row_update = simplejson.dumps([updated_record.table.first_name, >> updated_record.table.last_name, updated_record.table2.name, >> str(A(edit_icon, _href=URL(r=request,f='edit_loader', args=[ >> updated_record.table.record_id, mode]), _class="updateDialog")), >> updated_record.table.email, updated_record.table.someother_id]) >> >> #using the tr#id method to update table is unreliable (the TR won't have >> an id if it was added dynamically >> #instead use the row index provided by datatables.net itself (we passed >> it in via ajax vars) >> #essentially fnUpdate(new td values, which row) >> response.js += '$("#your_table_selector").dataTable().fnUpdate( '+ >> row_update+', '+request.vars['datatable_row_index']+',0, false );' >> >> #also using jGrowl to give an acknowledgement >> message = T("%s updated") % (updated_record.table.first_name) >> response.js += '$.jGrowl("'+message+'");' >> >> >> And as the second bonus, how to insert a brand new row in the datatable. >> (Below my datatable.net is another always visible LOAD()ed form for >> creating a new record. Upon submission the new record is inserted into the >> existing datatable via javascript returned in web2py's response) >> >> In controller: >> #do the database insert then >> #prepare for display update >> edit_icon = IMG(_src=URL(c="static",f="images/page_white_edit.png"), _alt >> ="Click to edit") >> >> table_update = simplejson.dumps([new_record.table.first_name, new_record. >> table.last_name, >> new_record.table2.name, str(A(edit_icon, _href=URL(r=request,f= >> 'edit_loader', >> args=[new_record.table.record_id, form.vars.mode]), _class= >> "updateDialog")), >> new_record.table.email, new_record.table.foreign_id]) >> >> #issue command for adding new row to datatable >> response.js = 'vol_table.fnAddData('+table_update+');' >> >> Good luck >> >> ~Brian >> >> >> On Sunday, June 22, 2014 4:44:33 PM UTC-5, Tomeu Roig wrote: >>> >>> Thanks Brian, nice think to get a full href for pass to the >>> $web2py.component. >>> >>> I see that you use datatables.net. Do you use some plugin o directly >>> you pass json from controller? >>> >>> I want use in a new project but i have doubts have to implement. Can you >>> give me some idea? >>> >>> -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.