As Johann mentioned, the format of your fields var is wrong. Change to db.tablename.fieldname instead of 'tablename.fieldname' and you should be good.

Regarding Cliff's comment, all my experience (and therefore advice) is coming from running trunk, not 1.99.2.

Q1 - By links above, I meant - the add, delete, edit and view buttons
that are on the SQLForm.grid - Is there a way to add custom code for
it? With my new application, it works out of the box though and it
requires me to login.

You can supply a 'links' arg on your call to .grid.  I believe it is a list of 
buttons that can be defined and added to the grid.  I haven't used it, but 
found this example on the web:

links = [lambda row: A('Edit',_href=URL("default","edit",args=[row.id])),
         lambda row: A('Delete',_href=URL("default","delete",args=[row.id]))]

Q2 - Can I use those button functions  without authorization?

I believe you need authorization with the default links.  Don't know if you use 
custom links as described above.

Q3 - Is there a way to format the View rendered by the grid? Since the
"text" datatype field of Database containing huge text goes out of the
layout. It expands it horizontally.

I would think you'd be able to fix this with CSS.  Are you familiar with 
firebug?  This would help you find the exact settings that would affect that 
field.

Q4 - How can I hide ID field from showing up while viewing or
modifying data ?

Set the id field to readable=False, writable=False in your controller function before displaying the grid.

Hope this helps. Let me know if you have more questions. The new .grid and .smartgrid are amazing features of web2py.

    -Jim

On 11/15/2011 5:39 AM, Rahul wrote:
Hi All,
          Thanks for your help and wonderful posts - I cleared the css
mess and I was able to see the SQLForm.grid properly. I tried working
with multiple and even updated plugin layouts but it does not display
the SQLForm.grid properly if I have a plugin_layouts thing. With
default scaffolding application, it works like a charm- Here are my
findings - Created a new application.

Jim - If I use fields=fields , I get below traceback (Note
columns=fields works fine) - have a look at code listing below -
[Note: this is in index() function ]

---
     query = ((db.projects_posts.post_visibility=="Classified"))
     fields = ('projects_posts.title',
                'projects_posts.project_details',
                'projects_posts.estimated_worth'
               )
     headers ={'projects_posts.title': 'Title',
               'projects_posts.project_details': 'Details',
               'projects_posts.estimated_worth': 'Worth'}

     ##columns=fields works, but fields=fields throws a ticket ..see
below
     form = SQLFORM.grid( query=query, columns=fields, headers=headers,
                          deletable=False, editable=False, csv=False,
maxtextlength=64, paginate=10 )

     return dict(form=form)
-------------------------------------
TRACEBACK
-------------------------------------

Traceback (most recent call last):
   File "D:\WEB2PY\web2py\gluon\restricted.py", line 194, in restricted
     exec ccode in environment
   File "D:/WEB2PY/web2py/applications/Link_IT/controllers/default.py",
line 162, in<module>
   File "D:\WEB2PY\web2py\gluon\globals.py", line 149, in<lambda>
     self._caller = lambda f: f()
   File "D:/WEB2PY/web2py/applications/Link_IT/controllers/default.py",
line 40, in index
     deletable=False, editable=False, csv=False, maxtextlength=64,
paginate=10 )
   File "D:\WEB2PY\web2py\gluon\sqlhtml.py", line 1588, in grid
     if not field.readable: continue
AttributeError: 'str' object has no attribute 'readable'

Now some questions -
Q1 - By links above, I meant - the add, delete, edit and view buttons
that are on the SQLForm.grid - Is there a way to add custom code for
it? With my new application, it works out of the box though and it
requires me to login.
Q2 - Can I use those button functions  without authorization?
Q3 - Is there a way to format the View rendered by the grid? Since the
"text" datatype field of Database containing huge text goes out of the
layout. It expands it horizontally.
Q4 - How can I hide ID field from showing up while viewing or
modifying data ?

Please excuse me for asking so many questions but this is the best
place to get the answers. Please let me know on above questions. I
also intend to put up a web2pyslice for SQLForm.grid once I am done
with it completely. Thanks

More questions to follow...

Thanks and Sincerely, Rahul
(www.flockbird.com - web2py powered)


------------------------------------------------------------------------------------
On Nov 15, 5:28 am, Massimo Di Pierro<[email protected]>
wrote:
true. fields should also work with expressions
db.table.field1*db.table.field2+1 although I did not try.

On Nov 14, 3:36 pm, JaapP<[email protected]>  wrote:







One more reason to stick to using fields could be that with fields you
can specify the order in which the columns are shown, this didn't work
for 'columns'
On 14 nov, 18:13, Jim Steil<[email protected]>  wrote:
Ok, columns are gone again...
Might just be best to stick with using fields.
      -Jim
On 11/14/2011 8:47 AM, Jim Steil wrote:
I stand corrected on the 'columns' comment.  Massimo added it back in
this morning.
     -Jim
On 11/14/2011 8:45 AM, Jim Steil wrote:
here are a few thoughts...
1.  Make sure you create this test in a new app.  If you're updating
or adding functionality to an already existing app, then your layout
and base.css need to be updated.
2.  If using jquery-ui, then you need to download jquery-ui and
include it in your layout.html with a line like this:
{{response.files.append(URL('static','jquery-ui/js/jquery-ui-1.8.16.custom. 
min.js'))}}
{{response.files.append(URL('static','jquery-ui/css/sunny/jquery-ui-1.8.16. 
custom.css'))}}
3.  Don't use the 'columns' argument.  It is going away in the next
release.  Instead, use 'fields'.  In your case, use the following:
fields = [db.projects_posts.title, db.projects_posts.project_details,
db.projects_posts.estimated_worth]
4.  I typically do not specify the 'headers' arg.  Instead, set the
'label' on your table definition.  That way you only have to do it
once and can use it all over.  If you need to override it for a
particular function, then just set the 'label' attribute in that
function.
5.  At this time there is no documentation available for SQLFORM.grid
or SQLFORM.smartgrid.  The best thing to do would be to look through
this group for all the posts.  Massimo is working on an updated
version of that manual that he is hoping to have complete by the end
of this month.  That should contain information on .grid and .smartgrid.
6.  If you are going to be playing around with this I would recommend
that you work with the code in trunk.  I don't recall what state the
.grid was in when 1.99.2 was released.
As for answers for your specific questions:
Q: What is the exact proper method to use SQLForm.grid -
I think your on the right track.  Just need to clean up your css and
layout.html files to get the proper formatting.
Q: What all libraries do I need to include? where?
If you want to use jquery-ui then you need to download it and
reference it in your layout.html.
Q: How to make links work the way they should ?
I'd like some more information on what is going on here before giving
an answer.
Q: Can search be customized? How?
I don't remember if the search_form is implemented in 1.99.2, but
there is a search facility built in that allows the users to create a
custom search.  I am not a fan of it and have some other ideas how
developers could be allowed to create custom search forms, but I
haven't opened a ticket on it yet.
Q: Is this documented in online book?  - did not find much about it in
version 3.2 though.
Documentation will be coming with the next version of the book
targeted for the end of the month.
Hope this helps.
     -Jim
On 11/14/2011 6:54 AM, Rahul wrote:
Hi All,
        Can anyone let me know how to use SQLForm.grid properly or tell
me what I am missing. I have not installed any jquery plugin for the
same (assuming that it is part of 1.99.2 by default). I cannot see the
complete grid, just some buttons and data as per my query below. Also
the links do not function when clicked. The table does not show any
backgroud color or anything. Simply it doesnt look like a jquery
grid.  My code is as below -
My machine - Windows7 , IE9 and Firefox 7.0, Chrome.
Web2py- Latest stable (1.99.1)
#---------Controller- (default.py)---
def index():
      """
      example action using the internationalization operator T and flash
      rendered by views/default/index.html or views/generic.html
      """
      #Posts grid - SQLForm.grid
      #grid = SQLFORM.grid(db.projects_posts)
      query = ((db.projects_posts.post_visibility=="Classified"))
      columns = ('projects_posts.title',
                 'projects_posts.project_details',
                 'projects_posts.estimated_worth'
                )
      headers ={'projects_posts.title': 'Title',
                'projects_posts.project_details': 'Details',
                'projects_posts.estimated_worth': 'Worth'}
      form = SQLFORM.grid( query=query, columns=columns,
headers=headers,
                           deletable=False, editable=False, csv=False,
maxtextlength=64 )
      return dict(form=form)
#--------- View ---  (index.html)
{{extend 'layout.html'}}
{{=form}}
Also, if possible please refer me to the proper documentation for
SQLForm.grid. Again, if I include the parameter  form =
SQLForm.grid(.....,  ui="jquery-ui") in above code, the buttons
disappear and it only shows me links for 'view' etc.
Q: What is the exact proper method to use SQLForm.grid -
Q: What all libraries do I need to include? where?
Q: How to make links work the way they should ?
Q: Can search be customized? How?
Q: Is this documented in online book?  - did not find much about it in
version 3.2 though.
Please advice or refer me to the proper thread(though I checked
several to find solutions).
Regards, Rahul (www.flockbird.com - web2py powered)

Reply via email to