【问题标题】:TbGridView with DatePicker not displaying on second row in yii带有 DatePicker 的 TbGridView 未显示在 yii 的第二行
【发布时间】:2013-12-11 17:14:12
【问题描述】:

我不确定为什么会这样。我想在每一行中显示日期选择器,但 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'),
                    ),

【问题讨论】:

  • 我认为它有 id 冲突

标签: gridview yii datepicker


【解决方案1】:

您的问题在于生成的输入字段的 ID。您的 sateDateFrom 函数将生成一个 id 为“product_discount_valid_from”的输入字段,因此以下行发生冲突,并且 javascript 最终不知道要附加到哪个元素。

要解决这个问题,您需要为 sateDateFrom() 函数生成的每个元素创建唯一的 ID。在这个函数内部,因为它是从网格中调用的,所以你有两个自动可用的变量; $数据和$行。这些可用于创建唯一 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 类将日期选择器添加到具有该类的所有元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多