原來項目寫了一個EasyUI類,裡面寫了一個datagrig()方法
public function _datagrid($tag) {
$id = !empty($tag['id']) ? $tag['id'] : strtolower(CONTROLLER_NAME.'_'.ACTION_NAME.'_datagrid');
$style = !empty($tag['style']) ? $tag['style'] : '';
//預設參數
$dataOptions = array(
'border' => false,
'fit' => true,
'fitColumns' => true,
'rownumbers' => true,
'singleSelect' => true,
'pagination' => true,
'pageList' => array(20,30,50,80,100),
'pageSize' => cookie('pagesize') ? cookie('pagesize') : C('DATAGRID_PAGE_SIZE'),
);
$options = $tag['options'] ? $this->autoBuildVar($tag['options']) : 'array()';
$fields = $tag['fields'] ? $this->autoBuildVar($tag['fields']) : 'null';
$parseStr = '
\' style="'. $style .'">
'; $parseStr .= '$arr):if(isset($arr[\'formatter\'])):unset($arr[\'formatter\']);endif;echo "
| ".$key." | ";endforeach;endif; ?>'; $parseStr .= '
';
return $parseStr;
}
控制器裡是這樣寫的邏輯
$datagrid = array(
'options' => array(
'title' => $currentpos,
'url' => U('Uc/pages', array('grid'=>'datagrid')),
'toolbar' => 'uc_pages_datagrid_toolbar',
),
'fields' => array(
'page' => array('field'=>'page','width'=>15,'sortable'=>true),
'Access' => array('field'=>'private','width'=>15,'sortable'=>true),
'管理操作' => array('field'=>'id','width'=>15,'formatter'=>'ucPagesOperateFormatter'),
)
);
$this->assign('datagrid', $datagrid);
頁面是這樣引用標籤的,資料就出來了
現在的問題是,這是操作的pages表,裡面有欄位id ,page ,private,private的值是0或者1,控制器裡利用field=》‘private'將0或者1顯示到了頁面上,但是我們的要求是當資料庫privat欄位值是0時頁面顯示public,是1時,頁面顯示private。不改變表的內容,結構,也就是不動表,怎樣操作才能實現呢?請大家幫我看看,謝謝!
回複討論(解決方案)
我頭腦一熱,忽然發現,利用跟管理操作那一列的方式顯示就能實現,呵呵,解決了!
我在pages頁面裡定義了一個格式化函數ucPagesAccessFormatter()
//Access格式化
function ucPagesAccessFormatter(val){
var btn=[];
if(val==0){
return "public";
}else{
return "private";
}
}
在控制器裡寫成:
'fields' => array(
'page' => array('field'=>'page','width'=>15,'sortable'=>true),
'Access' => array('field'=>'private','width'=>15,'formatter'=>'ucPagesAccessFormatter'),
'管理操作' => array('field'=>'id','width'=>15,'formatter'=>'ucPagesOperateFormatter'),
)
結果頁面就顯示出來了:
你們誰回複下啊,我好給你們分啊,我給不了自己分啊,不然分全浪費了!
呃,會easyUI,不會php