Web2py SQLTABLE数据样式设置

时间:2012-07-31 13:19:24

标签: web2py

在我的应用程序中,我使用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%)。我找不到任何选项来指定只对齐感知列的对齐。

我非常感谢任何评论。

1 个答案:

答案 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中的数据列添加样式选项的好方法...我仍然认为类更好。