1
我想要SORT
我的數據在基於字母表的gridview中,當ID包含數字時,如果按ID排序,例如1-100或100-1,我的代碼就可以工作。 如何從A-Z或Z-A獲得sort
?是否可以自定義Yii2 sort
?PHP YII 2 - 如何從A-Z或Z-A中排序數據?
我有在控制器中的代碼:
public function actionItemreport()
{
$modelFunctions = new functions;
$modelFunctions->checkingUser($this, Yii::$app->controller->id, Yii::$app->controller->action->id);
$this->transfield = array('icitem' => $modelFunctions->getFieldTranslationTable('icitem'), 'iclink' => $modelFunctions->getFieldTranslationTable('iclink'));
$arrDays = array('0' => $this->arrtrans[134], '1' => $this->arrtrans[135], '2' => $this->arrtrans[136], '3' => $this->arrtrans[137], '4' => $this->arrtrans[138], '5' => $this->arrtrans[139], '6' => $this->arrtrans[140]);
$arrSchedule = $this->getItemReportScheduler();
$ftpSql = "SELECT * FROM icenvinit";
$a_icenvinit = Yii::$app->db->createCommand($ftpSql)->queryOne();
if($a_icenvinit['hostaddr1'] != "")
{
$arr_ftp['FTP1'] = $this->arrtrans[141];
}
if($a_icenvinit['hostaddr2'] != "")
{
$arr_ftp['FTP2'] = $this->arrtrans[142];
}
switch (intval($arrSchedule['type']))
{
case 1 : $listSchedule = "[ " . $this->arrtrans[143] . " ] : {$arrSchedule['hour']}:{$arrSchedule['minute']}";
break;
case 2 : $days = $arrDays[$arrSchedule['day']];
$listSchedule = "[ " . $this->arrtrans[144] . " ] : {$days} {$arrSchedule['hour']}:{$arrSchedule['minute']}";
break;
case 3 : $date = $arrSchedule['date'];
$listSchedule = "[ " . $this->arrtrans[145] . " ] : {$date} {$arrSchedule['hour']}:{$arrSchedule['minute']}";
break;
case 4 : $listSchedule = "[ " . $this->arrtrans[146] . " ] : Every {$arrSchedule['interval']} Hour(s)";
break;
default : $listSchedule = $this->arrtrans[147];
$listTarget = "";
break;
}
$sql = "SELECT * FROM icdbval";
$count = Yii::$app->db->createCommand("select count(1) from icdbval")->queryScalar();
$arrsort['attributes'] = array('id' => array('label' => $this->arrtrans[148]));
$arrsort['attributes'] += array('orgfield' => array('label' => $this->arrtrans[149])); //, 'asc' => array('orgfield' => SORT_ASC)
$arrsort['attributes'] += array('status' => array('label' => $this->arrtrans[91]));
$arrsort['defaultOrder'] = array('id' => SORT_ASC);
$sort = $arrsort;
$a = 0;
$arrview = array();
$arrview[$a]['attribute'] = 'id';
$arrview[$a]['label'] = $this->arrtrans[148];
$arrview[$a]['encodeLabel'] = false;
$arrview[$a++]['value'] = function ($data)
{
return $data['id'];
};
$arrview[$a]['attribute'] = 'orgfield';
$arrview[$a]['label'] = $this->arrtrans[149];
$arrview[$a]['encodeLabel'] = false;
$arrview[$a++]['value'] = function ($data)
{
return $this->get_trans_field($data['orgfield']);
};
$arrview[$a]['attribute'] = 'status';
$arrview[$a]['label'] = $this->arrtrans[91];
$arrview[$a]['encodeLabel'] = false;
$arrview[$a]['format'] = 'raw';
$arrview[$a++]['value'] = function ($data)
{
if($data['status'] == "0")
{
$select0 = "selected";
$select1 = "";
}
else
{
$select1 = "selected";
$select0 = "";
}
$id = $data['id'];
$ni = $this->arrtrans[150];
$in = $this->arrtrans[151];
$html = <<< "SCRIPT"
<select class="_statusselect" theval="$id">
<option value="0" $select0>$ni</option>
<option value="1" $select1>$in</option>
</select>
SCRIPT;
// return $data['status'];
return $html;
};
$collumnview = $arrview;
$dataProvider = new SqlDataProvider([
'sql' => $sql,
'totalCount' => $count,
'sort' => $sort,
'pagination' => [
'pageSize' => Yii::$app->db->createCommand("SELECT rowpage from icenvinit")->queryScalar(),
],
]);
return $this->render('itemreport', ['error' => $error, 'success' => $success, 'collumnview' => $collumnview, 'dataProvider' => $dataProvider, 'sql' => $sql, 'count' => $count, 'listSchedule' => $listSchedule, 'arr_ftp' => $arr_ftp]);
}
和在視圖中:
<div class="table-responsive">
<?php Pjax::begin(['id' => 'item-report', 'timeout' => false]) ?>
<?
$js = <<< 'SCRIPT'
function changestatus(obj)
{
$('#successalert').css('display', 'none');
$('#erroralert').css('display', 'none');
$.ajax({
type :'POST',
dataType : 'json',
data : ({xval: obj.val(), id: obj.attr('theval')}),
url : 'updateitemreport',
success : function(response)
{
if(response.error)
{
// $('#successalert').css('display', 'none');
// $('#erroralert').html(response.html);
// $('#erroralert').css('display', 'block');
}
else
{
// $('#erroralert').css('display', 'none');
// $('#successalert').html(response.html);
// $('#successalert').css('display', 'block');
}
}
});
}
$('._statusselect').change(function() {
changestatus($(this));
});
SCRIPT;
$this->registerJs($js, yii\web\View::POS_READY);
?>
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => $collumnview,
]); ?>
<?php Pjax::end(); ?>
</div>
仍然無法工作bro – yosafat
單擊網格視圖中的標題標籤時會發生什麼? – scaisEdge