Wyświetlam dane w CGridView z dynamicznego kwerendy SQL przy użyciu CSqlDataProvider. Istnieje pewna statyczna i dynamiczna kolumna. Teraz chcę zrobić specjalne formatowanie, takie jak waluta w dynamicznych kolumnach. Ale jak to zrobić, gdy nie znam liczby/nazwy kolumn, dopóki nie zostanie wykonane zapytanie.Yii: Sortowanie i formatowanie kolumn dynamicznych
Chcę również móc sortować dynamiczne kolumny i znowu mam ten sam problem, że nie mam wszystkich nazw kolumn.
Ktoś, kto pracował z dynamicznymi zapytaniami i gridview. Proszę wskazać mi właściwy kierunek lub podać kilka pomysłów, jak to zrobić.
W skrócie mogę wyświetlić dane w widoku siatki (również w wierszach dynamicznych) i posortować wszystkie statyczne kolumny. Wystarczy posortować dynamicznych wierszy i format dynamiczne & statyczne kolumny
kod dla GridView:
$tdata=$dataProvider->getData();
//Calculation to get column names
$grid_columns = array_keys($tdata[0]);
foreach($grid_columns as $i=>$ii)
{
//Applying Formula to get Total Row
$grid_final[$i] = array('name'=>$ii,'class'=>'bootstrap.widgets.TbTotalSumColumn');
}
//Grid View
$this->widget('bootstrap.widgets.TbExtendedGridView', array(
'sortableRows'=>true,
'afterSortableUpdate' => 'js:function(id, position){ console.log("id: "+id+", position:"+position);}',
'dataProvider'=>$dataProvider,
'type'=>'striped bordered',
'template' => "{items}\n{extendedSummary}",
'columns'=> $grid_final,
));
Kod Kontroler:
public function actionIndex()
{
if(isset($_GET['month']))
{
$month=$_GET['month'];
}
else
{
$month= 7;
}
//SQL Query with Dynamic Columns
$sql = "SELECt ABC,X,Y,Z, @Column_Names
FROM some_table
WHERE [month] = :month";
$connection=Yii::app()->db;
$command=$connection->createCommand($sql);
$command->bindParam(':month',$month,PDO::PARAM_STR);
$dataProvider=new CSqlDataProvider($sql,array('keyField' => 'ABC','params' => array(
':month' => $month,
),'sort' => array(
//Here how do i put column names which i don't know yet for sorting
'attributes' => array(
'ABC','X','Y','Z')),'pagination'=>false));
$this->render('index',array('dataProvider' => $dataProvider, 'month' => $month));
}
Czy możesz dodać jeszcze jeden kod? – kasoft
@ user3265427 Dodano kod kontrolera .. Zobacz także rozszerzony kod. Pokazałem obliczenia dla zmiennej $ grid_final dla kolumn w siatce – neophyte
@ user3265427 potrzebujesz więcej informacji? – neophyte