Qcodo元件的开关位置



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

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

我曾考虑过在css中使用第n个子项创建一个上边距,但也没有成功。

现在,复选框切换下拉列表的可见性,但复选框位于下拉列表显示的下方。我想另一种方法是以某种方式使用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;

渲染顺序将取决于控件的父控件,在您的情况下为$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。尚未对此进行测试,但它应该有效。您可以在QCubedExamples网站上看到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; 

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

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

这个到CSS:

.mydropdown {
z-index: 9999;
}

但是z索引也存在IE6/7错误

最新更新