2013-12-11 7 views
0

Я не уверен, почему это происходит. Я хочу отобразить выбор даты в каждой строке, но gridview отображает только первую строку (как от, так и до дисплеев). После этого календарь никогда не появляется (как от, так и до). enter image description hereTbGridView с DatePicker не отображается во второй строке в yii

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

Я думаю, что он имеет конфликты id – tinybyte

ответ

0

Ваша проблема с идентификаторов генерируемых полей ввода. Функция sateDateFrom будет генерировать поле ввода с идентификатором 'product_discount_valid_from', поэтому конфликтуют следующие строки, и javascript не знает, к какому элементу присоединяться.

Чтобы исправить это, вам необходимо создать уникальные идентификаторы для каждого элемента, сгенерированного функцией sateDateFrom(). Внутри этой функции, поскольку она вызывается из сетки, у вас есть две переменные, автоматически доступные ей; $ data и $ row. Они могут использоваться для создания уникальных идентификаторов. Поэтому попробуйте изменить свою функцию на что-то вроде этого;

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 ко всем элементам, имеющим этот класс.

+0

имеет смысл! Благодаря! – jaime

Смежные вопросы