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 [email protected].
For more options, visit https://groups.google.com/d/optout.