Bermain di Cgridview

Halo.

Saya ingin minta bantuan para ahli di sini.

Saya lagi membuat modul rapor nilai, nah fungsi modulnya adalah untuk mengisi nilai ujian semua siswa dari satu kelas.

untuk itu saya menggunakan cgridview, kemudian membuat textfield di dalam cgridview (jadi data bisa di edit langsung di tabel keluaran cgridview).

permasalahannya adalah: 1. bagaimana caranya agar saya dapat melakukan save data yang ada di textfield ke dalam database?

  1. karena data di tabel keluaran cgridview ada banyak, bagaimana caranya agar satu tombol save untuk menyimpan semua data di tabel?

penampakan sepenggal bagian dari source code daftarnilai.php


$this->widget('zii.widgets.grid.CGridView', array(

	'id' => 'nilai-grid',

	'dataProvider' => $model->search(),

	'filter' => $model,

	'columns' => array(

		'id',

		array(

				'name'=>'mapel_id',

				'value'=>'GxHtml::valueEx($data->mapel)',

				'filter'=>GxHtml::listDataEx(Mapel::model()->findAllAttributes(null, true)),

				),

				array(

			'name' => 'rapor_id',

			'filter' => CHtml::listData(Rapor::model()->findAll(), 'id', 'siswa_id'), 

			'value' => 'GxHtml::valueEx($data->rapor)',

		),

//		'TryOut1',

		array(

			'name'=>'TryOut1',

			'value'=> 'Chtml::textField(\'TO1\', $data->TryOut1, array(\'width\'=>20,\'maxlength\'=>3))',

			'type'=>'raw',

			'htmlOptions'=>array('width'=>'20px'),

			),

//		'TryOut2',

		array(

			'name'=>'TryOut2',

//			'value'=> 'Chtml::textField($data->rapor, $data->TryOut2,   array(\'width\'=>20,\'maxlength\'=>3))',

			'value'=> 'Chtml::textField(\'TO2\', $data->TryOut2, array(\'width\'=>20,\'maxlength\'=>3))',

			'type'=>'raw',

			'htmlOptions'=>array('width'=>'20px'),

			),

//		'TryOut3',

		array(

			'name'=>'TryOut3',

			'value'=> 'Chtml::textField(\'TO3\', $data->TryOut3, array(\'width\'=>20,\'maxlength\'=>3))',

			'type'=>'raw',

			'htmlOptions'=>array('width'=>'20px'),

			),

		array(

			'class' => 'CButtonColumn',

			'template'=>'{simpan}{delete}',

    'buttons'=>array

    (

        'simpan' => array

        (

            'label'=>'simpan',

//masih belum di implementasikan



Kira-kira ada tidak alternatif lain yang lebih mudah daripada menggunakan cgridview?

THx

menurut aku CGridView tidak dirancang untuk melakukan penginputan ala datasheet kayak di MS Access. Itu murni view, kalaupun untuk execute hanya untuk Update dan Delete, satu per satu. Saran saya adalah kamu modifikasi create.php-nya.

<?php

Yii::app()->clientScript->registerScript(‘search’, "

$(’.search-button’).click(function(){

&#036;('.search-form').toggle();


return false;

});

$(’.search-form form’).submit(function(){

&#036;.fn.yiiGridView.update('your-grid', {


	data: &#036;(this).serialize()


});


return false;

});

");

?>

<?php

  echo CHtml::link('Create','#',array('class'=&gt;'search-button')); ?&gt;

<div class="search-form" style="display:none">

<?php $this->renderPartial(’_form1’, array(‘model’=>$model1));?>

</div><!-- add-form1 -->

<?php

$this->widget(‘zii.widgets.grid.CGridView’, array(

'id'=&gt;'your-grid',


'dataProvider'=&gt;&#036;model-&gt;userchild(&#036;model-&gt;id),


'columns'=&gt;array( .....dst

?>

Keterangan:

  1. Java Script untuk meng-hide form ketika selesai disave

  2. modifikasi _form.php sesuai dengan kebutuhan yang kamu inginkan. Form ini yang digunakan untuk isi data2nya

  3. setiap kali di save otomatis Cgridview-nya akan terupdate… saya udah coba ini di form/sub form saya

moga2 bisa membantu…

editablegridview

Bagaimana memformat data/value pada CGridView?. misalnya tanggal yang aslinya 2010-12-20 12:20:10 menjadi 20-12-2010. Makasih sebelumnya.:)

bisa begini bro




//Tanggal memiliki type datetime di table

'value'=>'$waktu_format = date(\'d-m-Y\',strtotime($data->Tanggal))',



Trims bro atas bantuannya :)

Tanya lagi bro. Ada yang pernah bikin search di CGridView dengan 2 model g?. soalnya saya lagi buat nih. trims

2 model tersebut ada relasinya ga kalu ada bisa, kalu ga ada ane blum coba :D

Dua model sih bisa-bisa aja, asal sebelumnya diproses dulu jadi CArrayDataProvider (since Yii 1.1.4)

http://www.yiiframework.com/doc/api/1.1/CArrayDataProvider

terima kasih atas jawabannya. sudah ketemu solusinya kok. mungkin perlu nyoba yg 3 atau 4 model ;D

permisi,sy ada maslah dengan cgridview nya maklum newbie :D

misal kan

ada dua tabel table A dan Table B

kemudian table B belongs to table A dengan nama relasi dimodel b =

‘ba’=>array(self::belongs_to,‘A’,‘id_b’)

di view b menggunakan CGridview,

ketika

data tgl di A timestamp

pada value =>’$data->ba->tgl’ itu ko hasilnya 0000.00.00(alias nilai default) ya? padahal jika value=>’$data->ba->nomor’ hasilnya ada???

coba aja di


print_r($data->ba); die();

ada gak di object untuk value tgl

takutnya gak ke get saja ^^ …