0

私のアプリケーションでは、コンテンツを表示するために 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%) が左揃えで表示されています。パーセテージ列のみに配置を指定するオプションが見つかりませんでした。

コメントをいただければ幸いです。

4

1 に答える 1

3

SQLTABLE を直接作成していますか?

やってみました:

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

#my-sqltable次に、セレクターの最初の部分として使用できます。たとえば、1 行おきに強調表示するには、次のようにします。

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

特定のスタイルを sql-table の異なる列/セルに渡す方法はありません。通常はそうしますx = SQLTABLE(..., _style=...)が、それでも、必要な列をターゲットにする簡単な方法はありません。

ただし、「headers」キーワードの「class」パラメーターを使用して、特定の列にアタッチされるクラスを作成できます。クラスを「some-class」に設定し、生成されたマークアップを確認します。th.some-class と td.some-class があることがわかります。クラスを使用して、スタイルを設定する要素をターゲットにすることができます。繰り返しになりますが、SQLTABLE では、生成された TD ノードに「スタイル」属性を付加する方法はありません。

「extracolumns」を使用してコンテンツをラムダ関数 (のようなもの{'content': lambda row: DIV(row.some_val, _style='text-align: right'), ...}) で設定すると、コンテンツを DIV でラップして右揃えにすることができますが、実際にはクラスの方がはるかに簡単です。外部スタイルシートに依存せずに SQLTABLE を同じように見せるために、このようなことをする必要があるかもしれません...うまくいくかどうかはわかりません。

css を個別に更新するか、コードをよりモジュール化することに懸念がある場合は、いつでも STYLE 要素をビューに渡すか<style>...</style>、スタイルを使用するビューでエンクロージャーを直接作成することができます。HTML4x/XHTML の head 要素の外側に style タグを配置することは技術的には「無効」ですが、それでも解析されます。また、HTML5 では、これは完全に 100% 有効です。

とにかく、私はあなたの質問に答えたことを願っています。クラスを使用することを強くお勧め.align-right { text-align: right }します。このクラスは、任意の数のもので使用できるため、ベース css に含めることができます。これはすでにコードでサポートされています!

これらのオプションのいずれも受け入れられない場合は、掘り下げて独自のカスタム TABLE クラスを作成する必要があります。おそらくSQLTABLEをサブクラス化し、TABLE内のデータ列にスタイルオプションを追加する良い方法を見つけることができます...私はまだクラスの方が優れていると思います。

于 2012-07-31T15:09:40.913 に答える