Yii Framework Forum: Bootstrap.widgets.tbgridview Zmienna Długość Kolumn? - Yii Framework Forum

Jump to content

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

Bootstrap.widgets.tbgridview Zmienna Długość Kolumn? Rate Topic: -----

#1 User is offline   Jarek 

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

Posted 24 September 2013 - 08:40 AM

Witam,

Korzystam z komponentu bootstrap.widgets.TbGridView i każda kolumna jest pobrana z bazy używająć metody kategorie lub kategorie2:

    $this->widget('bootstrap.widgets.TbGridView', array(
        'id' => 'mytab2',
        'dataProvider' => Miejsce::model()->search(),        
        'template' => "{items}\n{pager}",
         'columns' => array(
            array('name'=>'kategorie',
            'type'=>'raw',
            'value'=>array($this,'kategorie')),
            'columns' => array(
            array('name'=>'kategorie2',
            'type'=>'raw',
            'value'=>array($this,'kategorie2')),



oraz ciało metody:

  public function kategorie() {
        $sql = 'select nazwa_miejsca,sum(ocena) as ocena from tbl_ocena3,tbl_miejsce where  tbl_ocena3.id_miejsce = tbl_miejsce.id and tbl_miejsce.id_kategorie = 10
            group by 1';
        $select = Yii::app()->db->createCommand($sql)->queryAll();
        foreach ($select as $wynik){
            echo $wynik['nazwa_miejsca'];
        }
      
    }


niestety metody poszczególnych kolumn zwracają rózne rezultaty zapytań 1 lub kilka wierszy, jak stworzyć dynamiczną długość kolumn bootstrap.widgets.TbGridView (np. puste wiersze wypełnić tekstem(null) lub grafiką)
Może obrazowo wyjaśnie:
kategorie    |kategorie2    |
Nazwa_miejsca|Nazwa_miejsca |
null         |Nazwa_miejsca |
null         |Nazwa_miejsca |


zmiana 'dataProvider' na liczbę max. wyniku sql i where w sql is null then 'null'?

Pozdrawiam
Jarek
0

#2 User is offline   nineinchnick 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 622
  • Joined: 12-September 11
  • Location:Bialystok, Poland

Posted 24 September 2013 - 08:50 AM

Chodzi o to, że w jednej komórce wyświetlasz więcej niż jedną wartość i chcesz, żeby każda była w osobnej linii, ale żeby przy braku wartości była pusta linia, aby wartości w dwóch kolumnach pasowały do siebie?

Ustawiłeś już typ kolumny na 'raw', możesz więc dodawać w wartości kod html. Wstaw po każdej wartości złamanie wiersza '<br/>'.
Don't be a dick.
1

#3 User is offline   Jarek 

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

Posted 24 September 2013 - 11:07 AM

View Postnineinchnick, on 24 September 2013 - 08:50 AM, said:

Chodzi o to, że w jednej komórce wyświetlasz więcej niż jedną wartość i chcesz, żeby każda była w osobnej linii, ale żeby przy braku wartości była pusta linia, aby wartości w dwóch kolumnach pasowały do siebie?

Tak dokładnie o to mi chodzi.


Ustawiłeś już typ kolumny na 'raw', możesz więc dodawać w wartości kod html. Wstaw po każdej wartości złamanie wiersza '<br/>'.


Ustawiłem coś takiego:
foreach ($select as $wynik){
            echo $wynik['nazwa_miejsca'].'<br/>';
        }

ale znacznik <br/> nie rozwiązał sprawy, na wejsciu w widoku tablicy mam 3 wiersze ale to chyba jest powodowane tym że w bootstrap.widgets.TbGridView mam ustawione 'dataProvider' => Miejsce::model()->search(), może wystarczyć umiejetnie podpiąć dataProvider i będzie ok?Tylko jak?
0

#4 User is offline   nineinchnick 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 622
  • Joined: 12-September 11
  • Location:Bialystok, Poland

Posted 24 September 2013 - 12:03 PM

Nie wiem co złego w tym, że masz 3 wiersze. Podajesz za mało informacji.

DataProvider przekazany jest prawidłowo, jedyna (drobna) różnica to taka, że powinieneś utworzyć normalny model w scenariuszu 'search' i z niego wywołać metodę search():
$miejsce = new Miejsce('search');
$dataProvider = $miejsce->search();

Dzięki temu możesz w modelu ustawić wartości atrybutów, używanych przez metodę search do zbudowania kryteriów.
Don't be a dick.
0

#5 User is offline   kradam 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 17
  • Joined: 22-October 12

Posted 07 October 2013 - 04:04 AM

View PostJarek, on 24 September 2013 - 08:40 AM, said:

    $this->widget('bootstrap.widgets.TbGridView', array(
        'id' => 'mytab2',
        'dataProvider' => Miejsce::model()->search(),        
        'template' => "{items}\n{pager}",
         'columns' => array(
            array('name'=>'kategorie',
            'type'=>'raw',
            'value'=>array($this,'kategorie')),
            'columns' => array(
            array('name'=>'kategorie2',
            'type'=>'raw',
            'value'=>array($this,'kategorie2')),


Ten kod jest działający? Bo z dokumentacji wynika, że typ właściwości value powinien być string, a Ty masz array. Czegoś nie rozumiem? Następnie zaczynasz definiować columns w columns, tak ma być?
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