[Solved] Event select deselect pada CCheckBoxColumn

halooo kk2 para master Yii.

newbie mau nanya lagi nih.

Dalam Cgridview saya menggunakan CCheckBoxColumn.

Saya punya link event untuk select dan deselect gimana caranya ya gan?.




<?php echo CHtml::link('Select All','#',array());?>

<?php echo CHtml::link('Deselect All','#',array());?>



ane bingung merujuknya kemana :(

pake jQuery aja…

si linknya dikasih css id,

si checkbox2nya dikasih css class




$("#selectButton").click(function(){

   $(".checkbox").val(true); 

   //ini gak inget fungsi buat ngasi checknya gimana <img src='http://www.yiiframework.com/forum/public/style_emoticons/default/tongue.gif' class='bbc_emoticon' alt=':P' /> liat di manual jQuery aja

})



eh ralat deng…

kayak gini mungkin




$("#selectAll").click(function(){

    $('.checkbox').attr('checked',true);

});


$("#deselectAll").click(function(){

     $('.checkbox').attr('checked',false);

});



something like that lah :P

belum saya cobain juga sih, hehe…

semoga bener…

Tidak tau versi bro Petra benar atau tidak. Tetapi pas cek di stackoverflow (juga biasa yang saya pakai) mau ceklis sebuah checkbox sih pakai cara gini


$('#myCheckbox').attr('checked','checked');

kalau mau uncheck pakai ini


 $('.myCheckbox').removeAttr('checked');

iya, saya ngeliat di stackoverflow juga gitu sih,

cuman yg saya tulis juga dulu pernah saya coba berhasil kayaknya,

kalo gagal ya pake yg versi di atas aja :D

setelah ane bongkar pake firebug, ane dapet ini gan




//skdata itu nama class , nama tablenya sk_data

<input type="checkbox" id="skdata-grid_c0_all" name="skdata-grid_c0_all" value="1" class="select-on-check-all">



ane coba masukin code kyk gini


<?php echo CHtml::link('Select All','#',array( ('skdata-grid_c0_all').attr('select-on-check-all'));?>

ada pesan kykgini gan

Fatal error: Call to undefined function attr()


<?php echo CHtml::link('Select All','#',array( 'onclick'=>"('#skdata-grid_c0_all').attr('checked', 'checked')"));?>

coba diganti jadi begini~

siip errornya hilang gan. Tapi tidak terjadi apa2. Gak ada yang berubah :D

kalau gini gimana?




<?php

Yii::app()->clientScript->registerScript('check-js', '

	$(\'#selectAllLink\').click(function(){

		$(\'.myCheckBox\').attr(\'checked\',\'checked\');

	});

	$(\'#deselectAllLink").click(function(){

		 $(\'.myCheckbox\').removeAttr(\'checked\');

	});

');

?>


<?php echo CHtml::link('Select All', '#', array('id' => 'selectAllLink'));?>

<?php echo CHtml::link('Deselect All', '#', array('id' => 'deselectAllLink'));?>


<?php

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

    'dataProvider'=>$dataProvider,

    'columns'=>array(

		//columns

        array(

			'class' => 'CCheckBoxColumn',

			'cssClassExpression' => 'myCheckBox',

        ),

    ),

));

?>



ane udah ikutin saran dari agan Petra

ane coding kayak gini




<?php

Yii::app()->clientScript->registerScript('check-js', "

	$('#selectAllLink').click(function(){

		$('#myCheckBox').attr('checked','checked');

	});

	$('#deselectAllLink').click(function(){

		 $('.myCheckbox').removeAttr('checked');

	});

");

?>


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

	'id'=>'skdata-grid',

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

	'filter'=>$model,

	'selectableRows' => 2,

	'columns'=>array( array(

                  'class'=>'CCheckBoxColumn', 

		  'cssClassExpression' => 'myCheckBox',				  

		         ),

),

));

?>


<?php echo CHtml::link('Select All', '#', array('id' => 'selectAllLink'));?>

<?php echo CHtml::link('Deselect All', '#', array('id' => 'deselectAllLink'));?>



Trus ada pesan errornya gan.

Use of undefined constant myCheckBox - assumed ‘myCheckBox’

Asumsi ane sih errornya dibaris ini


 'cssClassExpression' => 'myCheckBox',	

Pas ane coba ganti jadi


 'cssClassExpression' => 'CCheckBoxColumn',	

Ternyata sama aja error juga. :D

Kira2 kenapa ya gan?. Ane belum bisa bongkar2 Yii, maklum newbie :D.




 'cssClassExpression' => '\'myCheckBox\'', 



agan petra dan agan junxiong makasih sebelumnya atas kesedian membalas postingan saya. :D

saya coba saran dari agan petra

Alhamdulillah, error menghilang.

Tapi seperti biasa, tidak ada aksi apa2. Tidak ada yang berubah :(

Padahal klo ane cek pake firebug itu kode merujuknya ud bener




// hasil ngeliat pake firebug

<a id="selectAllLink" href="#">Select All</a>

<a id="deselectAllLink" href="#">Deselect All</a>



Hihihihi…kenapa ya gan?

coba bantu:

mungkin gini




<?php

Yii::app()->clientScript->registerScript('check-js', '

        $("#selectAllLink").click(function(){

              $(':checkbox').each(function(){

                $(this).attr('checked','checked');

                 });


        });

        $("#deselectAllLink").click(function(){

                $(':checkbox').each(function(){

                $(this).attr('checked','false');

                 });


        });

');

?>




mantabzzzz gan…setelah ane edit gabung hasil coding dari agan petra dan agan ressaince

Alhamdulillah berhasil…!!!. Makasih gan. :D

Ini coding perkawinannya.


<?php

Yii::app()->clientScript->registerScript('check-js', "

        $('#selectAllLink').click(function(){

              $(':checkbox').each(function(){

                $(this).attr('checked','checked');

                 });


        });

        $('#deselectAllLink').click(function(){

                $(':checkbox').each(function(){

                //unchecked saya pake dari agan petra 

                $(this).removeAttr('checked');

                 });


        });

");

?>



Thx buat agan petra, agan junxiong dan agan reisaince.

muach…muachh… :D

kalo pake ‘:checkbox’ ntar kalo nambah checkbox di luar grid bisa keselect juga loh :P

Gpp gan, kebetulan di page yang ini checkbox cuman di grid-nya aja.

Ntar klo bingung masalah checkbox ane mau nanya2 lagi sama agan2. :D

bisa juga kok gan biar yang diluar grid ga keselect.

dengan


'cssClassExpression' => 'myCheckBox', 

maka




$('#selectAllLink').click(function(){

              $(':checkbox').each(function(){

               if($(this).attr("class")=="myCheckBox")$(this).attr('checked','checked');

                 });


        });

        $('#deselectAllLink').click(function(){

                $(':checkbox').each(function(){

                //unchecked saya pake dari agan petra 

               if($(this).attr("class")=="myCheckBox")$(this).removeAttr('checked');

                 });


        });



dengan begitu checkbox diluar grid tidak akan ikut tercentang apabila ia tidak memiliki class="myCheckBox"

semoga ngerti

harusnya




<?php

Yii::app()->clientScript->registerScript('check-js', '

	$(\'#selectAllLink\').click(function(){

		$(\'.myCheckBox\').attr(\'checked\',\'checked\');

	});

	$(\'#deselectAllLink").click(function(){

		 $(\'.myCheckbox\').removeAttr(\'checked\');

	});

');

?>



bisa dong yah…

yang aq gak ngerti itu baris ini gan


'cssClassExpression' => '\'myCheckBox\'', 

itu tanda ‘\’ apa maksudnya?. >>> ‘\‘myCheckBox\’’

itu soalnya dia di eval() jadi script PHP lagi,




$mycheckbox = 'myCheckBox';

$css = eval('$mycheckbox'); //$css = 'myCheckBox';


$css = eval('\'myCheckBox\''); //$css = 'myCheckBox';


$data->id = 1;

$css = eval('\'myCheckBox\'.$data->id'); //$css = 'myCheckBox1';




http://php.net/manual/en/function.eval.php