我需要在页面中显示两个相关的下拉列表。如果我们从第一个下拉列表中选择一个项目,根据我们选择的项目,它应该过滤第二个下拉列表中的条目,然后我需要使用第二个下拉列表中的值执行搜索。但问题是,从第一个下拉列表中显示的表中的值不是它的活动记录。任何人都可以帮忙吗?
目前我已经有了第二个下拉列表,它可以根据所选值执行搜索。现在我需要做的是在其上方放置一个下拉列表,并根据第一个下拉列表过滤项目。
第一个表 - client_id,client_name - 第一个下拉列表中的项应显示客户端名称
第二个表 - program_id,client_id,program_name -
第3个表 - ad_id,program_id,ad_name - 第二个下拉列表应显示使用client_id过滤的ad_names。
答案 0 :(得分: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 - ',
));
?>