我的网格显示带有LEFT OUTER JOIN的产品,以便在产品已被选中时显示额外信息。
一切都很棒。
现在我想将产品描述添加到产品名称的title属性中。因此,当用户将鼠标移到(鼠标悬停?)名称时,将显示说明。
db.product.productname.represent = lambda value, row: A(value, _href=URL('offer', 'view_product', args=row.product.id), _title=row.product.description)
当db.product.description包含在网格中的字段中时,此方法有效。但随后该列也会显示,我不想要。当我设置.readable = False。该列不会显示,但也不会显示说明。
我还尝试使用标题来仅指定我想要显示的字段,但它仍显示Description列。
如何在查询中包含该字段,但不在网格中显示该字段?
这是整个网格:
pagecontent = SQLFORM.grid(query,
left=db.product_offer_item.on((db.product.id == db.product_offer_item.product_id)\
& (db.product_offer_item.offer_id == currentquote)),
args=[groupid],
create=False,
editable=False,
deletable=False,
details=False,
csv=False,
orderby=db.product.productname,
fields=[db.product.productname,
db.product.purchasecost,
db.product.monthlycost,
db.product_offer_item.optional,
db.product_offer_item.quantity,
db.product_offer_item.discount,
db.product.description # Here is the problem field
],
# headers={'product.productname' : db.product.productname.label,
# 'product.purchasecost' : db.product.purchasecost.label,
# 'product.monthlycost' : db.product.monthlycost.label,
# 'product_offer_item.optional' : db.product_offer_item.optional.label,
# 'product_offer_item.quantity' : db.product_offer_item.quantity.label,
# 'product_offer_item.discount' : db.product_offer_item.discount.label},
maxtextlength = 100,
links=[lambda row: A(T('Update'),
_href='#',
_class='button btn btn-default',
_id=row.product.id,
_name='btnUpdate')
]
)
更新按钮没有链接,因为它由js处理,以解决无法使每一行成为自己的形式的问题。
答案 0 :(得分:0)
我已经通过将我不希望显示的字段包含在列表中的第一个字段(因此它是第一列)来解决这个问题,然后将表示设置为隐藏的div。
db.product.description.represent = DIV(' ', _style='display:None')
并隐藏标题,在网格中将此列的标题设置为相同。
headers = {'product.productname':DIV(' ', _style='display:None)
使用列的边距,它会在表格的开头处创建一个非常小的空间。甚至都不明显。如果小空间更合适,那么将字段移动到顺序中的其他位置也同样容易。
现在,带有title属性中描述的productname的表示可以使用。
db.product.productname.represent = lambda value, row: A(value,
_href=URL('offer', 'view_product', args=row.product.id),
_class='blacklinks',
_title=row.product.description)