Hi !
(re-posting this, since my earlier post was unsuccessful).
Database back-end is MySQL
=========
Controller:--
=========
def do_something():
result = db.executesql('select acnm,acgrp,accd from ac',
as_dict=True)
return dict(result=result)
=====
View:--
=====
do_something.html
{{extend 'layout.html'}}
<table id="custlist"></table>
<script>
jQuery("#custlist").jqGrid({
datatype: "local",
height: 250,
colNames:['Name','Group', 'Code'],
colModel:[{name:'acnm',index:'acnm', width:150, sortable:true},
{name:'acgrp',index:'acnm', width:150,
sortable:true},
{name:'accd',index:'acnm', width:150,
sortable:true}
],
multiselect: true,
caption: "Customer Data"
});
var mydata = {{=XML(result)}};
for(var i=0;i<=mydata.length;i++)
jQuery("#custlist").jqGrid('addRowData',i+1,mydata[i]);
</script>
============================
But the result is a blank page.
I checked the source of browser page to find that result contained an
array like this:--
[{'acnm': u'Vineet', 'accd': u'200124', 'acgrp': u'home'},......]
Pl. note the u character (for unicode?) before each value in the
dictionary.
Then I tried to do like following:--
1) In controller, parse the dictionary values
2) check if it is string
3) If string, then .encode('utf-8') the values.
4) return the modified dict
But still no success in rendering the view.
Then I tested the jqGrid code by giving a hardcoded "result" array
directly into <script> tag.
It works.....
I tested with returning result=db().select(db.acid>0)
It works.....
So, my question is : How to get rid of the u character while returning
result from executesql('select....)?
I need this executesql for giving very complex queries.
Can anybody pl. help?
Thanks,
Vineet