2014-09-26 6 views
0

내 CGridView에서 폼 요소를 표시하고 있고 날짜 선택기를 싶지만, 내가 그러나 내가 그것을 때와 같이 부분적으로 작동 생각 Use a widget in a statically-called method에 기술 된 방법을 사용하여 DATEIN 수정 한CJuiDatePicker CGridview에서 양식 필드로

CDataColumn and its behaviors do not have a method or closure named "widget". 

는 불평 나는 일종의 일을하거나 datepicker가 작동하지 않습니다. 최초로드에서만 작동합니다.

<script> 
$(document).ready(function() { 
    /* 
    $("input[name*='DATEIN'] ").each(function(){ 
     jQuery(this).datepicker({'dateFormat':'<?=Yii::app()->params["localdate"]; ?>'}); 
    }); 
    */ 

    $("input[name*='datedone'] ").each(function(){ 
     jQuery(this).datepicker({'dateFormat':'<?=Yii::app()->params["localdate"]; ?>'}); 
    }); 
}); 
</script> 

<?php 

$job = new Jobs(); 
$buttonPlus = CHtml::ajaxLink('Add New Line', $this->createUrl('addNewLine',array("id"=>$model->id)), array(
     'type' => 'POST', 
     'data' => array('id' => $model->id), 
     'success' => 'function(html){ $.fn.yiiGridView.update("jobs-grid"); $.fn.yiiGridView.update("detailsseismic-grid"); $.fn.yiiGridView.update("details3d-grid"); }' 
)); 

$this->widget('zii.widgets.grid.CGridView', array(
     'id'=>'jobs-grid', 
     'dataProvider'=>$job->searchbyproject($model->PROJID),  
     'afterAjaxUpdate'=>'function(id,options){ 
          $("#jobs-grid").children("table").children("thead").children("tr").children("th").children("a").each(function(){   
           $(this).click(function(){ 
            var x = getQueryParams(this.href); 
            if($("#detailsgeoscan-grid").length) 
             $.fn.yiiGridView.update("detailsgeoscan-grid",{data:"sort="+x.sort}); 
            else if($("#detailsseismic-grid").length) 
             $.fn.yiiGridView.update("detailsseismic-grid",{data:"sort="+x.sort}); 
            else if($("#details3d-grid").length) 
             $.fn.yiiGridView.update("details3d-grid",{data:"sort="+x.sort}); 
           }); 

          }); 

          $("#jobs-grid").children("div").children("ul").children("li").children("a").each(function(){     
           $(this).click(function(){  
            var x = getQueryParams(this.href); 
            if($("#detailsgeoscan-grid").length) 
             $.fn.yiiGridView.update("detailsgeoscan-grid",{data:"Detailsgeoscan_page="+x.Jobs_page}); 
            else if($("#detailsseismic-grid").length) 
             $.fn.yiiGridView.update("detailsseismic-grid",{data:"Detailsseismic_page="+x.Jobs_page}); 
            else if($("#details3d-grid").length) 
             $.fn.yiiGridView.update("details3d-grid",{data:"Details3d_page="+x.Jobs_page}); 
           }); 

          }); 
     /* 
          $("input[name*=\'DATEIN\'] ").each(function(){ 
           jQuery(this).datepicker({"dateFormat":"'. Yii::app()->params["localdate"]. '"}); 
          }); 
      */   
          $("input[name*=\'datedone\'] ").each(function(){ 
           jQuery(this).datepicker({"dateFormat":"'. Yii::app()->params["localdate"].'"}); 
          }); 
         }', 
     'summaryText' => '', 
     'columns'=>array(
       array(
         'name'=>'JOBNO', 
         'value'=>'CHtml::activeHiddenField($data, "[$row]JOBNO")' , 
         'type'=>'raw', 
         'headerHtmlOptions' => array('style' => 'display:none;'), 
         'htmlOptions' => array('style' => 'display:none'), 
         'footer' => $buttonPlus, 
         'footerHtmlOptions'=> array('colspan' => '7'), 
       ), 
       array(
         'name'=>'NAME', 
         'value'=>'CHtml::activeTextField($data, "[$row]NAME", array("size"=>25))' , 
         'type'=>'raw', 
         'footerHtmlOptions'=> array('style' => 'display:none'), 
       ), 
       array(
         'name'=>'SEQ', 
         'value'=>'CHtml::activeTextField($data, "[$row]SEQ", array("size"=>15))' , 
         'type'=>'raw', 
         'footerHtmlOptions'=> array('style' => 'display:none'), 
       ), 
       array(
         'name'=>'DATEIN', 
         //'value'=>'CHtml::activeTextField($data, "[$row]DATEIN", array("size"=>10))' , 
         'value' => function ($data, $row, $column) { 
          $controller = $column->grid->owner; 
          echo $controller->widget('zii.widgets.jui.CJuiDatePicker', array(
                   'model'=>$data, 
                   'attribute'=>'DATEIN', 
                   // additional javascript options for the date picker plugin 
                   'htmlOptions'=>array(
                     'class'=>'datefield', 
                     'id' => 'Jobs_'.$row.'_DATEIN', 
                   ), 
                   'options' => array(
                     'dateFormat' => Yii::app()->params["localdate"], 
                   ) 
                 ),true); 
         }, 
         'type'=>'raw', 
         'footerHtmlOptions'=> array('style' => 'display:none'), 
       ), 
       array(
         'header'=>"Process Complete <div id='checkboxgroup'> $processcompleteheader </div>", 
         'value'=>'$data->getcheckboxProcesses($row)', 
         'type'=>'raw', 
         'footerHtmlOptions'=> array('style' => 'display:none'), 
       ), 
       array(
         'name'=>'DATEDONE', 
         'value'=>'CHtml::activeTextField((count($data->jobsprocesscomplete)>0) ? $data->jobsprocesscomplete(array("order"=>"datedone desc")) : new Jobsprocesscomplete , "[$row]datedone", array("size"=>10))' , 
         'type'=>'raw', 
         'footerHtmlOptions'=> array('style' => 'display:none'), 
         'sortable' => false, 
       ), 
       array(      
         'name'=>'COMMENTS', 
         'value'=>'CHtml::activeTextField($data, "[$row]COMMENTS", array("style"=>"width:150px"))' , 
         'type'=>'raw', 
         'footerHtmlOptions'=> array('style' => 'display:none'), 
       ), 
       array(
         'header'=>'<a id="deletealljobs" title="Delete All Lines" onclick="deleteAllJob(\'1409099\')" href="#">X</a>', 
         'class'=>'CButtonColumn', 
         'template'=>'{delete}', 
         'footerHtmlOptions'=> array('style' => 'display:none'), 
       ), 

     ), 
)); 
?> 

나는

$processcompleteheader = null; 
    foreach ($processstages as $k => $v) { 
     $processcompleteheader .= CHtml::Checkbox($k."_all",'',array("value"=>$k,"title"=>$v)); 
    } 
    $lineListContent = "<div id='form_line_list'> 
     <div style='display: block; 
    left: 565px; 
    position: absolute; 
    top: 7px;'> " .CHtml::hiddenField("PROJID",$model->PROJID) . CHtml::hiddenField("id",$model->id) . CHtml::activeFileField(new Fileupload,'jobs', array('onChange'=>'showLoadDialog();submit(this)'))."<a id=clearfile href=# onclick='clearfile()' />X</a></div>"; 
    $lineListContent .= $this->renderPartial("/jobs/_formJobsGridview",array("model"=>$model,"processcompleteheader"=>$processcompleteheader),true); 
    $lineListContent .= "</div>"; 
+0

CGridView에서 호출하는 방법에 코드를 추가 할 수 있습니까? –

답변

0

내가 여기이 질문은 당신을 도울 수 있다고 생각 다른보기에서 그것을 렌더링 :

Use a widget in a statically-called method

기본적으로이 위젯은 컨트롤러에 의해 호출 할 수 있습니다 ,하지만 귀하의 코드에서 gridview하여 호출하려고합니다.

+0

업데이트 된 질문 – shorif2000

+0

"그러나 나는 그것이 일종의 일을하는 것처럼 부분적으로 작동하거나 datepicker가 작동하지 않는다고 생각합니다. 초기로드에서만 작동합니다." 이것은 자바 스크립트가 로딩되지 않음을 의미합니다. 당신의 렌더링 명령을 우리와 함께 나눌 수 있습니까? render ('viewfile', array (params), false, true)로 설정해보십시오. –

+0

업데이트 된 질문 – shorif2000