【问题标题】:Codeigniter jqGridCodeigniter jqGrid
【发布时间】:2011-07-29 11:29:23
【问题描述】:

我在使用 codeigniter 框架时无法在 jqGrid 中显示数据。 我已经用几乎相同的代码进行了测试,没有 codeigniter,一切都很好。我可以在网格中看到数据。

我正在使用 codeigniter 2.01、jquery 1.6.2 和 jqGrid 4.1.2 这是我的代码,不胜感激。

控制器 1:(我正在使用模板,函数 schulform 调用 die view 'grid.php')

public function schulform()
{

    fill_template('grid',navigation(),'banner_login');     
} 

控制器 2:(我知道 sql 语句应该在模型中,这只是为了测试)

class Gridserver extends CI_Controller {

public function __construct()
{
    parent::__construct();
            [.... css and js-Files....]
}


public function start() 
{   

    $page = $this->input->post('page',true); 
    $limit = $this->input->post('rows',true);

    $sidx = $this->input->post('sidx',true); 
    $sord = $this->input->post('sord',true); 


    if(!$sidx) $sidx =1; 


    $sql="SELECT * FROM tbl_schulform";
    $query = $this->db->query($sql);

    $count = $query->num_rows();


    if( $count > 0 && $limit > 0) { 
        $total_pages = ceil($count/$limit); 
    } else { 
        $total_pages = 0; 
    } 
    if ($page > $total_pages) $page=$total_pages;
    $start = $limit*$page - $limit; 
    if($start <0) $start = 0; 

    $sql = "SELECT SFId,Schulformname from tbl_schulform"; 
    $query = $this->db->query($sql);

            //just for testing
    $page="1";
    $total_pages="1";
    $count="3";

    $et='>';

    $this->output->set_content_type("content-type: text/xml");

    $s = "<?xml version='1.0' encoding='utf-8'?$et\n";
    $s =  "<rows>";
    $s .= "<page>".$page."</page>";
    $s .= "<total>".$total_pages."</total>";
    $s .= "<records>".$count."</records>";

    foreach($query->result_array() as $row){
        $s .= "<row id='". $row['SFId']."'>";  
        $s .= "<cell>'". $row['SFId']."'</cell>";          
        $s .= "<cell><![CDATA[". $row['Schulformname']."]]></cell>";
        $s .= "</row>";
    }
    $s .= "</rows>"; 
    echo $s;
}
}

查看(grid.php):

<script type="text/javascript">
$(function(){ 
    jQuery('#listSchulform').jqGrid({
    url:'<?=base_url().'gridserver/start'?>',
    datatype: 'xml',
    mtype: 'post',
    colNames:['ID', 'Schulformname'],
    colModel :[
        {name:'SFId', index:'SFId', width:400},
        {name:'Schulformname', index:'Schulformname', width:150}
    ],
    pager: '#pager',
    rowNum:15,
    rowList:[15,30,45],
    sortname: 'Schulformname',
    sortorder: 'asc',
    viewrecords: true,
    caption: 'Schulform',
    editurl:"",
    height:335
});

}); 
</script>

<center><table id='listSchulform'></table></center>
<div id='pager'></div>

函数fill_template在一个助手中:

function fill_template($content,$navi,$login)
{
    $ci=& get_instance(); 
    $ci->template->write('title','DWO');
    $ci->template->write_view('content',$content);
    if ($navi != '')    
        $ci->template->write('navi',$navi);
    if ($login != '')   
        $ci->template->write_view('login',$login);

    $footer="Footer dummy";
    $ci->template->write('footer',$footer);
    $ci->template->render();
}

最后,这是我直接调用这些函数时由 gridserver/start 生成的数据(我删除了所有 括号以显示此处的代码):

- 行 第 1 页/页 总计1/总计 记录3/记录 - 行 id="1" 单元格'1'/单元格 - 细胞 - ![CDATA[ Berufsschule ]] /细胞 /排 - 行 id="2" 单元格'2'/单元格 - 细胞 - ![CDATA[ Vollzeitschulform ]] /细胞 /排 - 行 id="3" 单元格'3'/单元格 - 细胞 - ![CDATA[ 测试 ]] /细胞 /排 /行

【问题讨论】:

  • 您能否发布确切的服务器响应(带有 XML 数据的 HTTP 响应的正文)?您可以使用FiddlerFirebug 来捕获数据。您能否另外验证服务器响应的 HTTP 标头中有哪些“内容类型”?

标签: codeigniter jqgrid


【解决方案1】:

我发现了我的错误。我不得不在模板的帮助下将 javascript 代码放入标题中。现在jqgrid中的数据就显示出来了。

【讨论】:

    猜你喜欢
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2011-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多