This is my current working _form.php:
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'products-form',
    'htmlOptions'=>array(
    'enctype'=>'multipart/form-data'),
'enableAjaxValidation'=>false,
)); ?>
...........
<table>
<?php  foreach($prodcats as $i=>$prodcat) { ?>
  <tr>  
<?php echo $form->hiddenField($prodcat, "[$i]prod_cat_id") ?>       
<td><?php echo $form->dropDownList($prodcat,"[$i]cat_id",$catList, $htmlOptions=array('empty'=>'Select Category')); ?><?php echo $form->error($prodcat,"[$i]cat_id"); ?></td>
<td><?php echo CHtml::link('Delete', $url=array('products/deleteProdCat', 'prod_cat_id'=>$prodcat->prod_cat_id));?></td>
    </tr>
<?php 
}
if(!empty($prodcats)){ $i++; }
$prodcat = new ProdCat();
?>
    <tr>
<td><?php echo $form->dropDownList($prodcat,"[$i]cat_id",$catList, $htmlOptions=array('empty'=>'Select Category')); ?><?php echo $form->error($prodcat,"[$i]cat_id"); ?></td><td>New</td>
    </tr>
</table>
......
I was trying to replace that example with (Please note it is simplified):
<?php
$this->widget('zii.widgets.CListView', array(
	'dataProvider'=>$prodcats,
    'itemView'=>'_cats',
    'template'=>'{items}'
)); 
?>
This would work in the _cats view file:
echo $data->prod_cat_id
This won’t work
<?php
$this->widget('zii.widgets.CListView', array(
	'dataProvider'=>$prodcats,
    'itemView'=>'_cats',
    'template'=>'{items}',
'viewData'=>$form
)); 
?>
echo $form->hiddenField($data, 'prod_cat_id') (or something like that probably needs to be $data->form)
Because $form is an object and viewData needs to be an array, passing an array would break break the CAvtiveForm, I think.