【问题标题】:JQGrid Header "doubling"JQGrid 标头“加倍”
【发布时间】:2011-09-08 12:46:30
【问题描述】:

我的第一个 jqGrid 实现有问题。网格正在渲染和加载数据。分页正在工作。但是,网格标题显示了两次。曾经作为一个固定的标题。并且也作为滚动区域的第一行。我使用 MySql 5.5.11 作为数据源、PHP 5.3.6、jQuery 1.6.1. 和 JqGrid 4.0.0。

作为网格后端的 PHP 代码如下所示:

// Processed based on the action.
switch ($lAction)
{
    case "LOAD":

    $page = $_POST['page']; // get the requested page
    $limit = $_POST['rows']; // get how many rows we want to have into the grid
    $sidx = $_POST['sidx']; // get index row - i.e. user click to sort
    $sord = $_POST['sord']; // get the direction

    $lDB = new DBConnection();

    $lTable         = "tblWebRequests";
    $lGridColumns   = "id,fname,lname,company,phone,email,reqfor";


    $lGrid = new DBDataGrid($lDB, $lTable, $lGridColumns, 1, 5);

    $response->page     = $page;
    $response->total    = $lGrid->GetTotalPages();
    $response->records  = $lGrid->GetTotalItems();
    $currentPageItems   = $lGrid->GetCurPageItems();

    for($i=0;$i<count($currentPageItems);$i++) 
    {
        $response->rows[$i]['id']=$currentPageItems[$i]['id'];
        $response->rows[$i]['cell']=array(
        $currentPageItems[$i]['id'],
        $currentPageItems[$i]['fname'],
        $currentPageItems[$i]['lname'],
        $currentPageItems[$i]['company'],
        $currentPageItems[$i]['email'],
        $currentPageItems[$i]['phone'],
        $currentPageItems[$i]['reqfor']


        );
    }    

    echo json_encode($response);            

    break;

HTML 如下所示:

<!-- Stylesheet includes. -->
<style type="text/css" media="screen">
@import url("css/main.css");    
@import url("css/start/jquery-ui-1.8.13.custom.css");       
@import url("css/ui.jqgrid.css");       
</style>

<script type="text/javascript" src="js/jquery-1.6.1.min.js"></script>;
<script type="text/javascript" src="js/grid.locale-en.js"></script>;
<script type="text/javascript" src="js/jquery.jqGrid.min.js"></script>;

<div class="contentwide">
<div id="databuttons">
<p></p>
<!-- end databuttons  --></div>
<div id="datasection">
    <table id="datatable">

    </table>

<!-- end datasection  --></div>
<p></p><p></p>
<div id="datapager">

    <script type="text/javascript">
        $('#datatable').jqGrid({
            url:'php/DataGridMgr.php',
            datatype: 'json',
            mtype: 'POST',
            colNames:['ID','First','Last','Company','Email','Phone','Request For'],
            colModel:
            [    
                {name:'id',index:'id',width:5,editable:false,hidden:true},     
                {name:'fname',index:'fname', width:20,editable:false,sortable:false},
                {name:'lname',index:'lname', width:20,editable:false,sortable:false},
                {name:'company',index:'company', width:35,editable:false,sortable:false},
                {name:'email',index:'email', width:35,editable:false,sortable:false},
                {name:'phone',index:'phone', width:20,editable:false,sortable:false},
                {name:'reqfor',index:'reqfor', width:25,editable:false,sortable:false}
            ],
            rowNum:5,
            rowList:[],
            imgpath: 'css/start/images', //alters buttons
            pager: $('#datapager'),
            pginput: true,
            sortname: 'id',
            viewrecords: true,
            sortorder: "asc",
            //caption:"Pending Requests",
            width:945,
            height:150,  
            onSelectRow: function(id)
            {
                alert(id);
            }
            //editurl:""
        });



    </script>
<!-- end datapager --></div>

我确定我错过了一些简单的东西。我一直在寻找解决方案无济于事。任何帮助将不胜感激。

【问题讨论】:

  • 听起来 SQL/PHP 正在返回响应中的标头。你能确保 $response 正确返回吗?
  • 我检查了回复,但似乎没有包含标题数据?响应确实有一个 page 和 rows 值,它是我相信的 JSON 的一部分。响应的其余部分是实际的数据库数据。还有什么我应该寻找的吗?感谢您的帮助。
  • json 响应应该有页、总数、记录(计数),然后只有没有标头的数据。将脚本放在寻呼机 div 中很奇怪,我会将其移出和移出。还应该将此行添加到 javascript: jQuery("#datatable").jqGrid('navGrid','#datapager',{edit:false,add:false,del:false});
  • 从寻呼机 div 中提取代码似乎缓解了标题问题?但是当我添加 jQuery("#datatable").jqGrid('navGrid','#datapager',{edit:false,add:false,del:fal‌se}); 时出现语法错误行到现有的 javascript。网格上的分页不起作用。我确信它与 jQuery("#datatable").jqGrid('navGrid','#datapager',{edit:false,add:false,del:fal‌​se});陈述。但我不确定出了什么问题?对不起,如果我遗漏了一些明显的东西......我很高兴得到帮助。
  • 摆脱了语法错误并添加了 jQuery("#datatable").jqGrid('navGrid','#datapager',{edit:false,add:false,del:fal‌se}) ;但是网格的分页仍然不起作用。我不确定为什么?有什么建议要检查的吗?

标签: php jquery mysql jqgrid


【解决方案1】:

json 响应应该有 page、total、records(count),然后只有没有标头的数据。将脚本放在寻呼机 div 中很奇怪,我会将其移出和移出。还应该将此行添加到 javascript:jQuery("#datatable").jqGrid('navGrid','#datapager',{edit:false,add:false,del:fal‌​se});

另外,我不使用 PHP/MySQL(我使用 asp.net),但看起来您正在对页面值进行硬编码?

$lGrid = new DBDataGrid($lDB, $lTable, $lGridColumns, 1, 5);

【讨论】:

  • 你是对的,1是要检索的网格的页面,5是每页的行数。
  • 好的,谢谢,我显然有一个哦,该死的,你完全按照我告诉你的那一刻做了......在用正确的变量替换了硬编码的页面和每页行值之后,有用。感谢您指出这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-06
  • 2018-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-31
相关资源
最近更新 更多