nemo  
            (Nemoneel)
           
           
          
              
                September 13, 2011,  4:50pm
               
               
          21 
           
         
        
          
 waterloomatt:
 
Hi nemo,
Sorry, I meant your should just use my 1 line to use the model and property name.
echo CHtml::activeDropDownList($model, 'Region_id', $categories, array(
 
Don’t change the rest of your code.
Matt
 
 
I did Matt, when I change the Region, Lab still blank.
<?php 
	        
            $list=CHtml::listData(Region::model()->findAll(),'id','region'); 
            echo CHtml::activeDropDownList($model, 'Region_id', $list, array(
            
           'empty'=>'Please Select Region', 
           'ajax' => array( 
           'type'=>'POST', //request type 
           'url'=>CController::createUrl('test/dynamicRegion'), //url to call. 
           'update'=>'#Lab_id', //selector to update 
           'data'=>'js:$(this).serialize()', 
            
           )));
           
           ?>
           <?php 
            	
              echo CHtml::activeDropDownList($model,'Lab_id', array(),array('id'=>'Lab_id'));
                               
            ?>
 
         
         
           
        
            
            
            
         
         
             
             
          
       
      
        
        
          Can you verify that your controller is receiving the POST variable? Try to echo it out - see this post for an example.
Also verify, by viewing page source, that the DOM element Id’s are correct?
Matt
         
         
        
            
            
            
         
         
             
             
          
       
      
        
          
          
            nemo  
            (Nemoneel)
           
           
          
              
                September 13, 2011,  5:11pm
               
               
          23 
           
         
        
          
 waterloomatt:
 
Can you verify that your controller is receiving the POST variable? Try to echo it out - see this post for an example.
Also verify, by viewing page source, that the DOM element Id’s are correct?
Matt
 
 
Without CHtml::activeDropDownList on Region, it’s working fine, but when I use activeDropDownList, Lab field not changing. Here is my controller. I appreciate if you change my code and let me know where I need to change
public function actionDynamicRegion(){
                $data=Lab::model()->findAllBySql('select * from Lab where Region_id='.$_POST['Region_id']); 
                $data=CHtml::listData($data,'id','name'); 
                foreach($data as $value=>$name) 
                { 
                        echo CHtml::tag('option', 
                        array('value'=>$value),CHtml::encode($name),true); 
                } 
		
    } 
 
         
         
        
            
            
            
         
         
             
             
          
       
      
        
        
          This is working for me.
Notice
I’m not setting the Id of the 2nd drop down list. I.e. NO echo CHtml::activeDropDownList($model,‘Lab_id’, array(),array(‘id’=>‘Lab_id’));
 
I am setting the key name of the post variable - categoryId
 
I’m using js:this.value to explicitly set the value.
 
The previous two points are just my preference; your method should work too.
 
 
Let me know how it goes.
        <div class="row">
             <?php echo $form->labelEx($model, 'category_id'); ?>
            <?php echo CHtml::activeDropDownList($model, 'category_id', 
                CHtml::listData(Category::model()->findAll(), 'id', 'name'), array(
                'empty' => 'Please Select Region',
                'ajax' => array(
                    'type' => 'POST',
                    'url' => CController::createUrl('/project/dynamicSubCategory'), //url to call. 
                    'update' => '#' . CHtml::activeId($model, 'sub_category_id'),
                    'data' => array('categoryId' => 'js:this.value'),
                )));
            ?>
            <?php echo $form->error($model, 'category_id'); ?>
        </div>
        <div class="row">
            <?php echo $form->labelEx($model, 'sub_category_id'); ?>
            <?php echo CHtml::activeDropDownList($model, 'sub_category_id', array()); ?>
            <?php echo $form->error($model, 'sub_category_id'); ?>
        </div>
 
public function actionDynamicSubCategory()
    {
        $data = SubCategory::model()->findAll('category_id=:category_id', array(':category_id' => $_POST['categoryId']));
        $data = CHtml::listData($data, 'id', 'name');
        foreach ($data as $value => $name)
        {
            echo CHtml::tag('option', array('value' => $value), CHtml::encode($name), true);
        }
    }
 
Cheers,
Matt
         
         
        
            
            
            
         
         
             
             
          
       
      
        
          
          
            asifa  
            (Kaziasifa)
           
           
          
              
                October 3, 2011,  1:32pm
               
               
          25 
           
         
        
          
hi,
I used your example it is working fine, but the the employee field is not updated in the database. The department field is updated but not the employee field.
Thanks,
         
         
        
            
            
            
         
         
             
             
          
       
      
        
          
          
            vert  
            (Xanat Licona)
           
           
          
              
                March 2, 2012, 10:21pm
               
               
          26 
           
         
        
          Thanks so much! I can’t do it this, but your topic helps me a lot!