0

我需要在我的页面中显示两个相关的下拉列表。如果我们从第一个下拉列表中选择一个项目,根据我们选择的项目,它应该过滤第二个下拉列表中的条目,然后我需要使用第二个下拉列表中的值执行搜索. 但问题是来自表格的值显示在第一个下拉列表中不是它的活动记录。有人可以帮忙吗?

目前我有第二个下拉列表,它可以根据所选值执行搜索。现在我需要做的是在其上方放置一个下拉列表并根据第一个下拉列表过滤项目。

编辑

第一个表 - client_id,client_name - 第一个下拉列表中的项目应显示客户端名称

第二个表 - program_id,client_id,program_name -

第三个表 - ad_id、program_id、ad_name - 第二个下拉列表应显示使用 client_id 过滤的 ad_names。

4

1 回答 1

0

最后我做到了,就是这样。

在我的控制器中,

public function actionDynamicDropdownList()
   {
    if($_POST['client_id'] > '0') {
        $result = Yii::app()->db->createCommand()->select('program_id, program_name')->from('program')->where('client_id='.$_POST['client_id'].'')->order('program_name')->queryAll();
        $this->render('admin', array(
            'result' => $result,
        ));
      }
}
public function actionDynamicProgramsList()
{
    if($_POST['program_id'] > '0') {
        $results = Yii::app()->db->createCommand()->select('ad_id, ad_name')->from('ads')->where('program_id='.$_POST['program_id'].'')->order('ad_name')->queryAll();
        $this->render('admin', array(
            'results' => $results,
        ));
    }
}

在我看来,我添加了

<?php
$data = Yii::app()->db->createCommand()->select('client_id, client_name')->from('client')->order('client_name')->queryAll();
echo CHtml::dropDownList('client_id', '',CHtml::listData($data,'client_id','client_name'), array(
'empty'=>'- Select Client Name -',
'ajax'=> array(
'type'=>'POST',
'url'=>Yii::app()->baseUrl.'/index.php?r=page/dynamicDropdownList',
'update'=>'#program_id'))); 

//empty since it will be filled by the above dropdown
echo CHtml::dropDownList('program_id','', CHtml::listData($result,'program_id','program_name'), array(
'empty'=>'- Select Program Name - ',
'onchange'=>'alert(this.value);',
'ajax'=> array(
'type'=>'POST',
'url'=>Yii::app()->baseUrl.'/index.php?r=page/dynamicProgramsList',
'update'=>'#ad_id')));
    //empty since it will be filled by the above dropdown
echo CHtml::dropDownList('ad_id','', CHtml::listData($results,'ad_id','ad_name'), array(
'empty'=>'- Select Ad Name - ',

));
?>
于 2013-01-22T22:17:03.323 回答