2014-09-26 52 views
0

我顯示我的CGridView表單元素,並想日期選擇器,但它抱怨CJuiDatePicker在CGridview作爲表單字段

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

我已經使用Use a widget in a statically-called method描述,但是我覺得它的工作原理部分當方法修改DATEIN我做了排序或日期選擇器不起作用。它的工作僅限於初始負載。

<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中調用它嗎? – 2014-09-26 13:10:59

回答

0

我想在這裏這個問題可以幫助你:

Use a widget in a statically-called method

基本上這個小部件可以通過控制器被稱爲,但在你的代碼中,你正嘗試通過gridview調用它。

+0

已更新問題 – shorif2000 2014-09-29 09:57:29

+0

「但是,我認爲它的工作原理與我在做排序或日期選擇器不起作用時一樣,它只在初始加載時工作。」這意味着你的JavaScript沒有加載。你能和我們分享你的渲染命令嗎?嘗試將其設置爲渲染('viewfile',數組(params),false,true); – 2014-09-29 11:22:52

+0

已更新問題 – shorif2000 2014-09-29 13:46:05