Были некоторые неверные значения, назначенные в функции поиска для модели избирательного округа.
Вот правильный полный рабочий код:
ЭТО КОД КОНТРОЛЛЕРА:
1.) Оставьте функцию, в которой сетка отображается пустым, как это
function index()
{
}
2.) Затем создайте новую функцию для отображенияСетка с данными, подобными этим:
function admin_showGrid()
{
$this->autoRender = false;
// get how many rows we want to have into the grid - rowNum parameter in the grid
$limit = $this->params['url']['rows'];
// get index row - i.e. user click to sort. At first time sortname parameter -
// after that the index from colModel
$sidx = $this->params['url']['sidx'];
// sorting order - at first time sortorder
$sord = $this->params['url']['sord'];
$page = $this->params['url']['page'];
// if we not pass at first time index use the first column for the index or what you want
if( !$sidx ) $sidx = 1;
// calculate the number of rows for the query. We need this for paging the result
$row = $this->{Model_Name}->find('count');
$count = $row;
// calculate the total pages for the query
if( $count > 0 )
{
$total_pages = ceil($count / $limit);
}
else
{
$total_pages = 0;
}
// if for some reasons the requested page is greater than the total
// set the requested page to total page
if( $page > $total_pages ) $page = $total_pages;
// calculate the starting position of the rows
$start = $limit * $page - $limit;
// if for some reasons start position is negative set it to 0
// typical case is that the user type 0 for the requested page
if( $start < 0 ) $start = 0;
// the actual query for the grid data
$limit_range = $start . "," . $limit;
$sort_range = $sidx . " " . $sord;
//$result = $this->{Model_Name}->findAll(null, "id,name", $sort_range, $limit_range, 1, null);
$this->{Model_Name}->recursive = -1;
$result = $this->{Model_Name}->find('all', array(
'fields' => array('id', 'name'),
'order' => $sort_range,
'limit' => $limit_range
));
$i = 0;
$response->page = $page;
$response->total = $total_pages;
$response->records = $count;
foreach($result as $result)
{
$response->rows[$i]['id'] = $result['{Model_Name}']['id'];
$response->rows[$i]['cell'] = array($result['{Model_Name}']['id'], $result['{Model_Name}']['name']);
$i++;
}
echo json_encode($response);
//writing exit() is necessary.
exit();
}
ЭТО КОД ОБЗОРА:
1.) включаетнеобходимые файлы
echo $this->Html->css('ui.jqgrid');
echo $this->Html->script('grid.locale-en');
echo $this->Html->script('jquery.jqGrid.min');
2.) добавьте следующий код javascript в ваш файл VIEW
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("#list").jqGrid(
/* '#list' is the ID of the table in which you want populated results */
{
url:'<?php echo $this->Html->url(array("controller" => "{Controller_Name}", "action" => "{Action_Name}")); ?>',
datatype: "json",
mtype: "GET",
colNames:['Id','Name'],
colModel:[
{name:'id',index:'id', width:55},
{name:'name',index:'name', width:90},
],
rowNum:10,
rowList:[10,20,30],
pager: jQuery('#pager'), /* id of the pagination element */
sortname: 'id',
viewrecords: true,
sortorder: "asc",
caption:"Enter table Heading or the name you want to show for the table",
height:"auto",
autowidth: true
});
jQuery("#list").navGrid("#pager",{edit:false,add:false,del:false});
})
</script>
3.) И, наконец, HTML в том же файле представления
<table id="list" style="height:auto;"></table>
<div id="pager"></div>
Если у вас все еще есть проблемы с кодом выше, сообщите мне.