Regarding your points:
1 . Fixed (static) columns: pls try datagrid/DataTables with FixedColumns plugin like this:
DataTables::create([
...
"plugins" => [ "FixedColumns" ], // add other plugins if you use them
"options" => [
"fixedColumns" => [
"leftColumns" => 2, // fix the two first columns from the left side
"rightColumns" => 1, // fix the one first column from the right side
]
]
]);
2 . What is the type of your icon? If it's an image, use a <img> tag with "src" linked to your image path and put the <img> as data for your column. If its a font image (like font-awesome, etc) use the icon html string as data for your column.
3 . You can use either Table's or DataTables' "cssClass" property to set css class for your cell base on its value and other columns' values:
https://www.koolreport.com/docs/datagrid/datatables/#set-custom-css-classes
DataTables::create(array(
...
'cssClass'=>array(
'table' => ...
'th' => ...
'tr' => ...
'td' => function($row, $colName) {
// this column's value = $row[$colName]
// $row also contains all other columns' values
// return the css class you want based on $row and $colName
$cssClasses = ...
return $cssClasses;
},
Then add css color rule for the td css class you set.