在我的应用程序中,我使用SQLTABLE来显示内容。我必须为这个表数据指定一些css样式。 请告诉我如何将样式设置为SQLTABLE数据。
示例:
#percengate datatype: decimal(5,2)
rows = db().select(db.t_tax.id,db.t_tax.percentage)
db.t_tax.percentage.represent = lambda r,v: str(v.percentage)+'%'
columns = ['t_tax.id','t_tax.percentage']
headers = {
't_tax.id':{'label':T('id'),
'class':'', #class name of the header
'width':'', #width in pixels or %
'truncate': 50, #truncate the content to...
'selected': False #agregate class selected to this column
},
't_tax.percentage':{'label':T('Tax'),
'class':'', #class name of the header
'width':'', #width in pixels or %
'truncate': 50, #truncate the content to...
'selected': False #agregate class selected to this column
}
}
table = SQLTABLE(rows,columns=columns,headers=headers,_width='100%',_class='datatable')
在此表中,我想右对齐Percentage列数据。现在它显示为左对齐的正常字符串(10.00%,20.00%)。我找不到任何选项来指定只对齐感知列的对齐。
我非常感谢任何评论。
答案 0 :(得分:3)
您是直接创建SQLTABLE吗?
你试过了吗?
x = SQLTABLE(rows, ..., _id='my-sqltable')
然后您可以使用#my-sqltable
作为选择器的第一部分。例如,要突出显示每隔一行:
#my-sqltable tr:nth-child(odd) td { background: gray; }
无法将特定样式传递给sql-table中的不同列/单元格。通常你会做x = SQLTABLE(..., _style=...)
,但即使这样,也没有简单的方法来定位你想要的列。
但是,您可以使用“headers”关键字的“class”参数创建一个将附加到给定列的类。将类设置为“some-class”并检查生成的标记 - 你应该看到你有th.some-class和td.some-class。您可以使用该类来定位要设置样式的元素。同样,SQLTABLEs无法将“样式”属性附加到生成的TD节点。
您可以使用“extracolumns”并使用lambda函数(类似{'content': lambda row: DIV(row.some_val, _style='text-align: right'), ...}
)设置内容,该函数将内容包装在DIV中并允许您右对齐,但实际上是类更容易。您可能需要做这样的事情,以使您的SQLTABLE看起来不一样,而不依赖于外部样式表...我只是不确定它是否会起作用。
如果您担心单独更新css或使代码更加模块化,您可以随时将STYLE元素传递给视图,或者直接在使用该样式的视图中创建<style>...</style>
机箱。虽然在HTML4x / XHTML中将样式标记放在head元素之外在技术上是“无效的”,但它仍然会解析。此外,在HTML5中,这完全100%有效。
Anyawy,我希望我已经回答了你的问题。我强烈建议你只使用一个类 - 在你的基础css中只能是.align-right { text-align: right }
,因为这个类可以用在任何数量的东西上。这已经得到了代码的支持!
如果这些选项都不可接受,我恐怕你不得不深入挖掘并编写自己的自定义TABLE类。您可以将SQLTABLE子类化,并找出一种向TABLE中的数据列添加样式选项的好方法...我仍然认为类更好。