2014-03-12 3 views
0

내 모델의 많은 CgridViews에는 일괄 삭제 기능이 있습니다 : chechboxColumn 및 삭제 된 버튼으로 모든 체크 된 사용자를 삭제합니다. 이를 위해 관리자는 ajax를 사용하고 컨트롤러는 새로운 액션을 사용합니다.Yii CgridView 벌크 삭제

이전 페이지의 확인 된 행을 저장하지 않는 th gridview에 페이지 매김을 추가 할 때까지 모든 것이 제대로 작동합니다.

나는 'enableHistory'= 사실, 을 사용하려고하지만 아무것도하지 않았다 (그리고 I'v 무엇을 읽고에서 나는 유일한 사람이 아니에요 : 부드러운 :) 그래서이 확장 다운로드 : selgridview

확장 기능 - 페이지를 이동할 때 확인 된 행은 계속 유지되지만 일괄 삭제 기능은 현재 내가있는 페이지의 선택된 행만 볼 수 있습니다.

 <?php 
    Yii::app()->clientScript->registerScript('delete',' 
    $("#butt").click(function(){ 
        var checked=$("#person-grid").yiiGridView("getChecked","person-grid_c11"); 
        var count=checked.length; 
        if(count>0 && confirm(" are you sure you want to delete "+count+" people ? ")) 
        { 
            $.ajax({ 
                data:{checked:checked}, 
                url:"'.CHtml::normalizeUrl(array('person/remove')).'", 
                success:function(data){$("#person-grid").yiiGridView("update",{});},    
            }); 
        } 
        }); 
    '); 
    ?> 

지금, 어쩌면 바보 같은 질문을 먹으 렴하지만 자바 스크립트에 대해 거의 알고

은 내가 사용 아약스입니다. 아약스에 문제가 있는지조차 확신하지 못합니다. . . .

도움이 많이 주시면 감사하겠습니다 : rolleyes :

답변

1

나는 selgridview extension을 사용하고 있습니다. 여기

if (Yii::app()->request->isAjaxRequest) 
     { 
      $selectedUsers = Yii::app()->request->getPost('selectedUsers'); 

      //iterate through all ids 
      foreach ($selectedUsers as $id) 
      { 
       //delete the user here... 
      } 
     } 
같은 것을 선택한 사용자에게 UsersController

//delete multiple users at once 
$('#delete_selected_items_button').on('click', function() { 
    var selected = $("#users-grid").selGridView("getAllSelection"); 

    //if nothing's selected 
    if (! selected.length) 
    { 
     alert('Please select minimum one user to be deleted'); 
     return false; 
    } 

    //confirmed? 
    if (! confirm('Are you sure to delete ' + selected.length + ' users?')) return false; 

    var multipledeleteUrl = "<?php echo Yii::app()->baseUrl;?>/users/multipledelete"; 

    $.ajax({ 
     type: "POST", 
     url: multipledeleteUrl, 
     data: {selectedUsers : selected}, 
     success: (function (e){ 

      //just to make sure we delete the last selected items 
      $("#users-grid").selGridView("clearAllSelection"); 

      //we refresh the CCGridView after success deletion 
      $.fn.yiiGridView.update("users-grid"); 

     }), 
     error: (function (e) { 
      alert("Can not delete selected users"); 
     }) 
    }); 
}) 

, actionMultipleDelete()을 삭제 할 내 코드입니다

0
  1. 내가이 플러그인에 대해 알고하지 않으며이 체크 박스가 체크 무엇 저장 방법,하지만 당신이로 볼 수 다음에 그 정보 를 전송하여 제어 장치.
  2. 또는 세션에서 어떤 모델을 삭제해야하는지 저장할 수 있습니다. 체크 박스에서 체크 박스가 체크되어 있는지 확인하십시오 (체크 박스가 체크되어 있는지 확인하십시오.) 체크 박스에 체크하면 컨트롤러에 ajax를 호출하여 모델의 ID를 세션에 저장하십시오. 사용자가 삭제를 클릭하면 세션에서이 데이터를 검색 할 수 있습니다.