我正在尝试向标记添加一个类,以便我可以控制其属性,特别是宽度。
以下是生成的HTML与类为空的情况。
alt text http://img651.imageshack.us/img651/7121/screenshot211201054338p.png alt text http://img515.imageshack.us/img515/1553/screenshot211201055524p.png
正如您所看到的,有几个标签我希望能够分配一个类,以便我可以从外部css文件执行样式,而不是在控制器中执行它,因为它似乎已完成下面。感谢。
// Add Target Data Grid
$this->dtgTargets = new QDataGrid($this);
$this->dtgTargets->CellPadding = 5;
$this->dtgTargets->CellSpacing = 5;
$this->dtgTargets->UseAjax = true;
$this->dtgTargets->AddColumn(new QDataGridColumn("Del", '<?= $_FORM->DeleteButton_Render($_ITEM) ?>', 'Width=10', 'HtmlEntities=false')); //add TF 11-27-08
$this->dtgTargets->AddColumn(new QDataGridColumn('Target Account','<a href="/account_detail.php?aid=<?= str_replace(" ","_",$_ITEM->Account->Id); ?>"><?= $_ITEM->Account->Name ?></a>','HtmlEntities=false',array('OrderByClause' => QQ::OrderBy(QQN::Target()->Account->Name), 'ReverseOrderByClause' => QQ::OrderBy(QQN::Target()->Account->Name,false))));
$this->dtgTargets->GetColumn(0)->Width = '200px';
$this->dtgTargets->SortColumnIndex = 0;
答案 0 :(得分:1)
我从未使用它,但我认为是可能的。来自QDataGridBase.class.php:
protected function GetHeaderRowHtml() {
$objHeaderStyle = $this->objRowStyle->ApplyOverride($this->objHeaderRowStyle);
$strToReturn = sprintf(" <tr %s>\r\n", $objHeaderStyle->GetAttributes());
$intColumnIndex = 0;
if ($this->objColumnArray) foreach ($this->objColumnArray as $objColumn) {
if ($objColumn->OrderByClause) {
// This Column is Sortable
if ($intColumnIndex == $this->intSortColumnIndex)
$strName = $this->GetHeaderSortedHtml($objColumn);
else
$strName = $objColumn->Name;
$this->strActionParameter = $intColumnIndex;
$strToReturn .= sprintf(" <th %s><a href=\"%s\" %s%s>%s</a></th>\r\n",
$this->objHeaderRowStyle->GetAttributes(),
QApplication::$RequestUri,
$this->GetActionAttributes(),
$this->objHeaderLinkStyle->GetAttributes(),
$strName);
} else
$strToReturn .= sprintf(" <th %s>%s</th>\r\n", $this->objHeaderRowStyle->GetAttributes(), $objColumn->Name);
$intColumnIndex++;
}
$strToReturn .= " </tr>\r\n";
return $strToReturn;
}
使用此方法设置属性:
$this->objHeaderRowStyle->GetAttributes()
GetAttributes在QBaseClass中实现,QBaseClass是系统中所有类的基类。
如果您尝试$ colMyColumn-&gt; CssClass ='class_name';你只设置了td类: - (
在研究代码之后,我可以在创建th标签时看到QDataGridBase.class.php,该样式取自描述行的RowStyle对象,因此是td标记。我认为这是一个错误,QDataGrid不完整。
或者您只是在视图中使用html表,或者您必须改进QDataGrid。
更新:
这是做到这一点的方法:
$objThStyle = new QDataGridRowStyle();
$objThStyle->CssClass = 'custom-th';
$this->dtgArticle->HeaderRowStyle = $objThStyle;
但它并不理想,因为它适用于所有标签。 QDataGridRowStyle应该在不在datagrid中的列对象中设置。
这是一个明显的例子,为什么我不喜欢Qcodo呈现HTML,CSS和JavaScript的方式。一切都是必须在控制器中设置的对象。在视图中你可以做的很少。想象一下,以这种方式在视图中设置类是多么简单:
<th>Column 1</th>
<th>Column 2</th>
<th>Column 3</th>
<th>...</th>