oops...
while parsing the string in controller, there was a bug.
Now I can escape the u character by using .encode('utf-8')
But still there are 2 questions---
1) using .encode('utf-8') everywhere is not preferable for me.
Is there any alternative, by which the default string encoding can be
set to utf-8?
2) After returning the dict to jqGrid in View (cited in my original
post),
the grid is not rendered.
Am I doing anything wrong in it?
Thanks,
Vineet
On Jun 12, 9:56 pm, Vineet <[email protected]> wrote:
> 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