Visualforce DataTable: Existe uma maneira de impedi -lo de renderizar o atributo de CellPadding?
-
28-09-2019 - |
Pergunta
No Visualforce, estou usando um <apex:dataTable>
Componente da seguinte maneira:
<apex:dataTable value="{!Qualifications}" var="qual" styleClass="cv_table" >
<!-- etc... -->
... E então estou usando o CSS para estilizar a tabela, através do nome da classe. O problema é que o Visualforce renderiza HTML como este:
<table class="cv_table" id="j_id0:j_id26" border="0" cellpadding="0" cellspacing="0">
<!-- etc... -->
O atributo de classe está lá como eu queria, mas também há o CellPadding e o CellSpacing especificados, que interferem no meu CSS.
Existe uma maneira de impedir o Visualforce de renderizar os atributos do CellPadding e Cellspacing <apex:dataTable>
?
Solução 4
Parece que abandonar o <apex:dataTable>
tag e usando o mais baixo-fi <apex:repeat>
A tag pode ser a única maneira de fazer isso.
Outras dicas
Mencionado acima, você já tentou remover os atributos? Especifique o ID
<apex:dataTable id="myTable" value="{!Qualifications}"...
então
<script type="text/javascript">
document.getElementById("myTable").removeAttribute("cellpadding");
document.getElementById("myTable").removeAttribute("cellspacing")
</script>
Que tal fornecer seus próprios valores para eles (o mesmo que no CSS)? Feio, mas funcionaria.
Fora isso - a remoção de atributos / reaplicação da classe com JavaScript?
Eu não acho que nem mesmo a remoção do Salesforce CSS (<apex:page ... showHeader="false">
) realizará esta tarefa.
Não sei se você pode suprimir esses atributos no Visualforce.
Mas se a pergunta que você está realmente perguntando é como não deixo que esses atributos afetem meu design geral, acho que o CSS pode ajudar.
O equivalente a CSS de cellpadding
é 'preenchimento' e o equivalente a CSS de cellspacing
é 'espaçamento de fronteira'. Este último só funciona em elementos do tipo TD até onde eu sei.
.cv_table TD {
border-spacing: 5px;
padding: 5px;
}