我不确定为什么会这样。我想在每一行中显示日期选择器,但gridview只显示第一行(显示从和显示)。之后,日历从不显示(来自和来自)。
public function saleDateFrom()
{
$this->widget('zii.widgets.jui.CJuiDatePicker',array(
'name'=>'product_discount_valid_from',
'value'=>date('d-m-Y'),
));
}
以及网格的位置:
'columns'=>array(
array('name'=>'product_name', 'header'=>'Product Name','htmlOptions'=>array('width'=>'300')),
array(
'value'=>array($this,'saleDateFrom'),
'header'=>'Valid From',
'htmlOptions'=>array('width'=>'150'),
),
答案 0 :(得分:0)
您的问题在于生成的输入字段的ID。你的sateDateFrom函数将生成一个id为'product_discount_valid_from'的输入字段,因此以下行会发生冲突,并且javascript最终不知道要附加到哪个元素。
要解决此问题,您需要为sateDateFrom()函数生成的每个元素创建唯一ID。在这个函数里面,因为它是从网格中调用的,所以它有两个自动可用的变量; $ data和$ row。这些可用于创建唯一ID。所以尝试将你的功能改成这样的东西;
public function saleDateFrom($data, $row)
{
$this->widget('zii.widgets.jui.CJuiDatePicker',array(
'name'=>'product_discount_valid_from',
'value'=>date('d-m-Y'),
'htmlOptions' => array(
'id' => 'product_discount_valid_from_' . $row
'class' => 'addDatePicker'
),
));
}
然后,您可以使用addDatePicker类将datepicker添加到具有该类的所有元素。