【问题标题】:Web2py SQLTABLE data style settingWeb2py SQLTABLE 数据样式设置
【发布时间】:2012-07-31 13:19:23
【问题描述】:

在我的应用程序中,我使用 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')

在此表中,我想右对齐百分比列数据。现在它显示为左对齐的普通字符串(10.00%,20.00%)。我找不到任何选项来指定仅与 percetage 列对齐。

我将非常感谢任何 cmets。

【问题讨论】:

  • 您能否更具体地了解您需要设置的 CSS 样式?

标签: web2py


【解决方案1】:

你是直接创建 SQLTABLE 吗?

你试过了吗:

x = SQLTABLE(rows, ..., _id='my-sqltable')

然后您可以使用#my-sqltable 作为选择器的第一部分。例如,每隔一行突出显示:

#my-sqltable tr:nth-child(odd) td { background: gray; }

无法将特定样式传递给 sql 表中的不同列/单元格。通常你会做x = SQLTABLE(..., _style=...),但即便如此,也没有简单的方法来定位你想要的列。

但是,您可以使用“headers”关键字的“class”参数创建一个附加到给定列的类。将类设置为“some-class”并检查生成的标记——你应该看到你有 th.some-class 和 td.some-class。您可以使用该类来定位您想要样式化的元素。同样,SQLTABLE 无法将“样式”属性附加到生成的 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% 有效的。

无论如何,我希望我已经回答了你的问题。我强烈建议只使用一个类——在你的基础 css 中可以是 .align-right { text-align: right },因为这个类可以用于任何数量的东西。这已经被代码支持了!

如果这些选项都不可接受,恐怕您将不得不深入研究并编写自己的自定义 TABLE 类。您也许可以将 SQLTABLE 子类化,并找出一种向 TABLE 中的数据列添加样式选项的好方法...我仍然认为类更好。

【讨论】:

  • 感谢您的回复。这对我很有用。但我只想知道在描述 SQLTABLE 时是否有任何直接的方法来指定样式。我已经编辑了我的问题。请让我知道 SQLTABLE 函数中是否有任何设置,而不是单独指定样式。
  • 感谢这个不错的回复。 '将类设置为“some-class”并检查生成的标记——你应该看到你有 th.some-class 和 td.some-class'。这就是我正在寻找的。我认为标题类仅用于标题。 Kasapo 再次感谢您的精彩回复。
  • @Pradeeshnarayan 是的,它并不是 web2py 最直观的部分。很高兴我能提供帮助!
猜你喜欢
  • 1970-01-01
  • 2018-04-16
  • 2020-10-14
  • 2012-03-07
  • 2011-09-24
  • 1970-01-01
  • 1970-01-01
  • 2019-09-06
  • 2016-03-02
相关资源
最近更新 更多