切换Qcodo元素的位置

时间:2012-11-25 21:49:10

标签: php javascript css qcodo

我有一个复选框,点击后会显示一个下拉列表。我只是想让他们改变立场。

问题是当我使用php更改位置时,它会抛出ajax错误。由于每个都在动态div id中调用,我无法真正使用CSS来更改它。

我已经研究过在css中使用nth-child创建一个上边距,但是也没有运气。

现在,复选框切换下拉列表的可见性,但复选框位于下拉列表的下方。我想另一种方法是以某种方式使用javascript ...我错过了什么?为什么不能交换订单

    $ret['reclength'] = new QListBox($objParent);
    $ret['length']->Name = _sp('Item Name');

    $ret['length']->AddItem("weekly", "7");
    $ret['length']->AddItem("bi-weekly","14" );
    $ret['length']->AddItem("Monthly","30" );
    $ret['length']->Display=false;      

    $ret['checkbox'] = new QCheckbox($objParent);
    $ret['checkbox']->Name = _sp('checkbox name');
    $ret['checkbox']->AddAction(new QClickEvent(), new QToggleDisplayAction($ret['length']));

    return $ret;

2 个答案:

答案 0 :(得分:0)

我不确定你的模板文件是什么样的,可能是乱序问题,因为正确排序它会改变它的显示顺序。但即使没有它,你也可以做点什么来订购它们。只需使用z-index并将Css类添加到QListbox:

$ret['length']->CssClass = "mydropdown";

这是CSS:

.mydropdown {
    z-index: 9999;
}

但是z-index

还有一个IE6 / 7错误

答案 1 :(得分:0)

渲染顺序将取决于您的控件父级,在您的情况下为$ objParent。如果$ objParent是QForm,那么您只需要在QForms模板中切换它们的顺序。然而,您正在目睹的行为我假设$ objParent是一个QPanel。如果是这种情况,您需要将模板添加到QPanel,并按照您希望的顺序在该模板中呈现控件。您可以尝试AutoRenderChildren = true,但这将按照委托作为QPanel的子项的顺序呈现控件。

要使用CSS定位,您可能需要向控件添加id。这样,您可以在CSS中引用它,并避免选择器中的任何歧义。您只需要向构造函数添加第二个参数,如

$ret['reclength'] = new QListBox($objParent, "myControlId");

只需确保myControlId对于页面是唯一的。然后你可以使用#myControlId在css中访问。

另一个可行的选项是在实例化QListBox控件时将父设置为$ this,然后在实例化QCheckbox之后将QListBox的父设置为$ objParent。没有测试过,但它应该工作。你可以在QCubed Examples site上看到QForms的实例。代码看起来像这样。请注意,这是未经测试但应该有效。

$ret['reclength'] = new QListBox($this);
$ret['length']->Name = _sp('Item Name');

$ret['length']->AddItem("weekly", "7");
$ret['length']->AddItem("bi-weekly","14" );
$ret['length']->AddItem("Monthly","30" );
$ret['length']->Display=false;      

$ret['checkbox'] = new QCheckbox($objParent);
$ret['checkbox']->Name = _sp('checkbox name');
$ret['checkbox']->AddAction(new QClickEvent(), new QToggleDisplayAction($ret['length']));

$ret['reclength']->SetParentControl($objParent);

return $ret;