Yii Framework Forum: Cd Odświeżenie Zii.widgets.grid.cgridview? - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Cd Odświeżenie Zii.widgets.grid.cgridview? Rate Topic: -----

#1 User is offline   Jarek 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 35
  • Joined: 06-May 13

Posted 16 December 2013 - 03:30 PM

Witam,

Skleciłem taką tabelke:

$data1 = CHtml::listData(Wojewodztwa::model()->findAll(), 'id', 'id'); 
$data2 = CHtml::listData(Wojewodztwa::model()->findAll(), 'nazwa', 'nazwa');
$model = Wojewodztwa::model();

//tabelka
$this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'grid_id',
    'dataProvider' => $subscriberActiveDataProvider,    
    'filter' => $model,
    //'type' => 'striped bordered',
    'columns' => array(
        //first column     
        array(
            'name' => 'id',
            'value' => '$data->id',
            'filter' => $this->widget('ext.EchMultiselect.EchMultiselect', array(
                'model' => $model,
                'dropDownAttribute' => 'id',
                'data' => $data1,
                'dropDownHtmlOptions' => array(
                    'style' => 'width:378px;',
                    'multiple' => true,
                    'id' => 'id',
                ),
                'options' => array(
                    'noneSelectedText' => '' . Yii::t('EchMultiSelect.EchMultiSelect', 'Wybierz nr') . '',
                    'buttonWidth' => 200, 'ajaxRefresh' => true, 'show' => ['slide', 500],
                    'hide' => ['explode', 500], 'classes' => 'dynamic_multiselect'
                ),
                    ), true
            )
        ),
        // second column   
        array(
            'name' => 'nazwa',
            'value' => '$data->nazwa',            
            'filter' => $this->widget('ext.EchMultiselect.EchMultiselect', array('model' => $model,
                'dropDownAttribute' => 'nazwa',
                'data' => $data2,
                'dropDownHtmlOptions' => array(
                    'style' => 'width:378px;',
                    'multiple' => true,
                    'id' => 'nazwa',
                ),
                'options' => array('buttonWidth' => 120, 'ajaxRefresh' => false, 'show' => ['slide', 500], 'hide' => ['explode', 500], 'classes' => 'dynamic_multiselect'),
                    ), true
            ),
        ),
    ),
));


podpiałem do tej tabelki zdarzenie w kontrolerze SiteController

   public function actionIndex() {        
        $dana = array();
        $criteria = new CDbCriteria;

        if (isset($_GET['ajax']))
            $dana = $_GET['Wojewodztwa']; 

        $warunek = null;
        $i = 0;
        foreach ($dana as $key => $value) {
            if (!empty($value)) {
                $warunek = $value[$i];
                ++$i;
            }
        }
        $criteria->condition = 'nazwa LIKE :nazwa';
        $criteria->params = array(':nazwa' => $warunek);
        $subscriberActiveDataProvider = new CActiveDataProvider('Wojewodztwa', array(
            'criteria' => $criteria,
        ));
        $this->render('index', array('subscriberActiveDataProvider' => $subscriberActiveDataProvider));
        
    }


no i prawie mi przykład działa ale mam odświeżanie tej tabelki tylko w konsoli firebug cała strona w przeglądarce jest nadal taka sama,jak zmusić aby strona została odświeżana w przeglądarce?

Pozdrawiam
Jarek
0

#2 User is offline   .viktor. 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 90
  • Joined: 25-August 10
  • Location:Sokołów Podlaski, Poland

Posted 17 December 2013 - 04:08 AM

Popatrzyłem na Twój kod, nie bardzo rozumiem co chcesz osiągnąć:
1. do czego ma służyć ten fragment,

$warunek = null;
        $i = 0;
        foreach ($dana as $key => $value) {
            if (!empty($value)) {
                $warunek = $value[$i];
                ++$i;
            }
        }


2. masz zaznaczone multiselect na id i nazwa, na id masz ajaxrefresh=true na nazwa masz ajaxrefresh=false.
3. jeżeli ajaxem wybiorę id to gdzie ustawiasz cryteria wyboru ? bo chyba nie w tym miejscu, tu jest tylko sama nazwa:

        $criteria->condition = 'nazwa LIKE :nazwa';
        $criteria->params = array(':nazwa' => $warunek);


4. jak niby pkt1 i pkt3 obsługują multiselect, coś chyba nie trzyma się "kupy"

Przeanalizuj jeszcze raz kod, napisz co chcesz osiągnąć, według mnie źle obsługujesz kryteria i tworzenie zapytań do CDataProvidera.

Viktor
0

#3 User is offline   Jarek 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 35
  • Joined: 06-May 13

Posted 17 December 2013 - 06:21 AM

Pkt1. pobiera wartości z tablicy przesłanej GETem i zapisuje w zmiennej warunek(faktycznie pobranie typu tablicy w GET muszę dopracować),
Pkt2. zmieniłem w obu kolumnach na ajaxrefresh=true,
Pkt3. dodałem 'id' do warunków,
Pkt4. Masz rację gdy mam ustawione multiselect to dane są typu tablicy i wtedy tez zapytanie są nie takie jak powinny,

na co jeszcze zwrócić uwagę?
0

#4 User is offline   Jarek 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 35
  • Joined: 06-May 13

Posted 17 December 2013 - 12:48 PM

zmieniłem kod actionIndex()

public function actionIndex() {
      '       
        $criteria = new CDbCriteria;
        if (isset($_GET['ajax'])) {
            if (isset($_GET['Wojewodztwa']['nazwa']))
                $moja_nazwa = $_GET['Wojewodztwa']['nazwa'];
            if (isset($_GET['Wojewodztwa']['id']))
                $moja_id = $_GET['Wojewodztwa']['id'];
            if (!empty($moja_nazwa))
                $criteria->compare('nazwa', $moja_nazwa);
            if (!empty($moja_id))
                $criteria->compare('id', $moja_id);
        }


        $subscriberActiveDataProvider = new CActiveDataProvider('Wojewodztwa', array(
            'criteria' => $criteria,
        ));
        $this->render('index', array('subscriberActiveDataProvider' => $subscriberActiveDataProvider));
        
    }


ale nadal efekt jest taki że strona się nie odświeża w przeglądarce a w konsoli firebug odświeżanie strony działa
0

#5 User is offline   .viktor. 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 90
  • Joined: 25-August 10
  • Location:Sokołów Podlaski, Poland

Posted 18 December 2013 - 04:43 AM

Nie używam osobiście tego rozszerzenia, ale przejrzałem tutorial http://www.yiiframew...echmultiselect/ i nie sądzę żeby ajaxRefresh służyło do odświeżania zawartości CGridView zgodnie z tym co deklaruje twórca "This is a simple Wrapper Widget for the jQuery UI MultiSelect" komponent ten ma opcję refresh ale do elementów listy tego właśnie komponentu.

1. Pokaż var_dump($_GET) i var_dump($_POST) z tego miejsca:
public function actionIndex() {

var_dump($_GET);
var_dump($_POST);
die();
...


2. Nadal nie rozumiem po co masz dwie listy wyboru, jedną na id a drugą na nazwę, przecież (tak sądzę) w bazie masz tabelę w której do jednego id masz przyporządkowaną jedną nazwę. Wydaje mi się że wystarczy jedna lista wyboru, ale nie wiem co chcesz osiągnąć ?
0

#6 User is offline   Jarek 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 35
  • Joined: 06-May 13

Posted 18 December 2013 - 07:37 AM

Pkt.1 tylko var_dump($_GET) wypluwa zawartość taką:


array (size=3)
  'Wojewodztwa' => 
    array (size=1)
      'nazwa' => 
        array (size=1)
          0 => string 'dolnośląskie' (length=14)
  'Wojewodztwa_page' => string '1' (length=1)
  'ajax' => string 'grid_id' (length=7)



Pkt.2 Mam dwie listy wyboru bo mam 2 kolumny i każda lista jest podpiąta na odpowiednia kolumne
0

#7 User is offline   .viktor. 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 90
  • Joined: 25-August 10
  • Location:Sokołów Podlaski, Poland

Posted 18 December 2013 - 08:09 AM

Nie wiem w takim razie co może być nie tak.
1. zrobiłbym test na minimum ustawień z http://www.yiiframew...echmultiselect/ na pewno z ajaxRefresh = false
2. do testow użyłbym tylko jednej listy.

daj znać jak poszło

jak nic nie zdzialasz, podeślij kod na priv to wieczorem popatrzę.
0

#8 User is offline   TickTak 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 26
  • Joined: 28-March 14

Posted 05 May 2014 - 08:45 AM

Look at this :

http://www.yiiframew...eate-new-model/
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users