diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py
index cb85158d..8230c947 100644
--- a/gluon/sqlhtml.py
+++ b/gluon/sqlhtml.py
@@ -2672,7 +2672,7 @@ class SQLFORM(FORM):
@staticmethod
def smartgrid(table, constraints=None, linked_tables=None,
- links=None, links_in_grid=True,
+ links=None, links_in_grid=True, max_linked_inline=0,
args=None, user_signature=True,
divider='>', breadcrumbs_class='',
**kwargs):
@@ -2814,6 +2814,8 @@ class SQLFORM(FORM):
linked_tables = linked_tables.get(table._tablename, [])
if linked_tables:
for item in linked_tables:
+ opts = [OPTION(T('References')+':', _value='')]
+ linked = []
tb = None
if isinstance(item, Table) and item._tablename in check:
tablename = item._tablename
@@ -2835,11 +2837,22 @@ class SQLFORM(FORM):
t = T(tb._plural) if not multiple_links else \
T(tb._plural + '(' + fieldname + ')')
args0 = tablename + '.' + fieldname
- links.append(
+ opts.append(OPTION(t,_value=args0))
+ linked.append(
lambda row, t=t, nargs=nargs, args0=args0:
A(SPAN(t), cid=request.cid, _href=url(
args=[args0, row[id_field_name]])))
+ if 0 < max_linked_inline < len(opts)-1:
+ links.append(
+ lambda row:
+ SELECT(opts, cid=request.cid, _rowid=row[id_field_name],
+ _onchange="javascript:document.location='"+url()+
+ "/'+this.value+'/'+this.attributes['rowid'].value"
+ )
+ )
+ else: links += linked
+
grid = SQLFORM.grid(query, args=request.args[:nargs], links=links,
links_in_grid=links_in_grid,
user_signature=user_signature, **kwargs)