带有DatePicker的TbGridView不显示在yii的第二行

时间:2013-12-11 17:14:13

标签: gridview yii datepicker

我不确定为什么会这样。我想在每一行中显示日期选择器,但gridview只显示第一行(显示从和显示)。之后,日历从不显示(来自和来自)。 enter image description here

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'),
                    ),

1 个答案:

答案 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添加到具有该类的所有元素。