我试图让jqgrid与codeigniter一起工作,但我做不到,我只想用json格式显示表中的数据……但什么也没发生。但我不知道我做错了什么,我看不到桌子上的内容,我打电话。
我的控制器
class Grid extends Controller
{
public function f()
{
$this->load->model('dbgrid');
$var['grid'] = $this->dbgrid->getcontentfromtable();
foreach($var['grid'] as $row) {
$responce->rows[$i]['id']=$row->id;
$responce->rows[$i]['cell']=array($row->id,$row->id_catalogo);
}
$json = json_encode($responce);
$this->load->view('vgrid',$json);
}
function load_view_grid()
{
$this->load->view('vgrid');
}
}
我的模型
class Dbgrid extends Model{
function getcontentfromtable()
{
$sql = 'SELECT * FROM anuncios';
$query = $this->db->query($sql);
$result = $query->result();
return $result;
}
我的视图(脚本)
$(document).ready(function() {
jQuery("#list27").jqGrid({
url:'http://localhost/sitio/index.php/grid/f',
datatype: "json",
mtype: "post",
height: 255,
width: 600,
colNames:['ID','ID_CATALOGO'],
colModel:[
{name:'id',index:'id', width:65, sorttype:'int'},
{name:'id_catalogo',index:'id_catalogo', sorttype:'int'}
],
rowNum:50,
rowTotal: 2000,
rowList : [20,30,50],
loadonce:true,
rownumbers: true,
rownumWidth: 40,
gridview: true,
pager: '#pager27',
sortname: 'item_id',
viewrecords: true,
sortorder: "asc",
caption: "Loading data from server at once"
});
});
希望有人帮我
最佳答案
您在评论中发布的服务器生成的数据
{"rows":{"":{"id":"11","cell":["11","225101503"]}}}
格式错误。输出应该是
{
"total": "xxx",
"page": "yyy",
"records": "zzz",
"rows" : [
{"id" :"1", "cell" :["cell11", "cell12", "cell13"]},
{"id" :"2", "cell":["cell21", "cell22", "cell23"]},
...
]
}
(见http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#json_data)。所以至少应该是
{"rows":[{"id":"11","cell":["11","225101503"]}]}
通常,如果定义
jsonReader
,您将能够读取几乎所有数据。只有用函数定义的jsonReader
才能读取您生成的数据(请参见http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#jsonreader_as_function和jquery with ASP.NET MVC - calling ajax enabled web service)。对您来说,最简单的方法是更改服务器代码,以生成标准格式集(见上文)中的数据,标准格式集可以读取这些数据。还有一句话。使用
jsonReader
对sorttype
没有影响。参数datatype: "json"
仅适用于本地数据的排序。如果sorttype
服务器将负责正确的数据排序。jqgrid只向服务器发送列的名称,用户选择哪个列进行数据排序。