jqGrid数据不再出现

时间:2011-11-24 03:08:53

标签: php jquery jqgrid width

关于这个表格上有很多主题;但是,我仍然无法正常工作。我想将表的宽度设置为900px。此外,因为我显示了大约十几行,所以如果行溢出表大小的边界(如果可能的话),我希望自动实现滚动条。

我目前遇到的问题:

  1. 用户帮助我解决了这个问题,即设置宽度

  2. 数据不再出现在我的网格中,猜测服务器端问题。

  3. 已更新,以包含完整代码:

    HTML:

          <?php 
    require_once 'tabs.php';
    ?>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
      <head>
        <title>jQuery jqGrid Demonstration</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link rel="stylesheet" type="text/css" media="screen" href="themes/redmond/jquery-ui-1.8.2.custom.css" />
        <link rel="stylesheet" type="text/css" media="screen" href="themes/ui.jqgrid.css" />
        <link rel="stylesheet" type="text/css" media="screen" href="themes/ui.multiselect.css" />
    
        <script src="js/jquery.js" type="text/javascript"></script>
        <script src="js/jquery-ui-custom.min.js" type="text/javascript"></script>
        <script src="js/i18n/grid.locale-en.js" type="text/javascript" ></script>
    
        <script type="text/javascript">
            $.jgrid.no_legacy_api = true;
            $.jgrid.useJSON = true;
        </script>
    
        <script type="text/javascript" src="js/jquery.jqGrid.min.js"></script>
    
    <script type="text/javascript">
    //<![CDATA[
        $(document).ready(function() {
            // first create the grid
            $('#grid').jqGrid({
        url:'grid.php',
        datatype: "json",
        height: 100,
        width: 900,
        colNames:['Customer ID','Hardware ID', 'Username','Password','Email','Last Login','Last IP','Registration Date','Expire Date'],
        colModel:[
            {name:'customerid',index:'customerid', width:150, sorttype:'int'},
            {name:'hardware_id',index:'hardware_id', width:150},
            {name:'username',index:'username', width:100},
            {name:'password',index:'password', width:100},
            {name:'email',index:'email', width:100},
            {name:'lastlogin',index:'lastlogin', width:100},
            {name:'lastipaddress',index:'lastipaddress', width:100},
            {name:'registration_date',index:'registration_date', width:100},
            {name:'expire_date',index:'expire_date', width:100}
        ],
        rowNum:5,
        rowList:[5,8,10,20,30], 
        mtype: "GET",
        gridview: true,
        pager: '#pager',
        sortname: 'customerid',
        viewrecords: true,
        sortorder: "desc",
        caption: "Virtual scrolling on local data"
    });
    
    $("#grid").jqGrid('navGrid','#pager', {view: true,del:false});
            // now you can any time change the width of the grid
            $('#grid').jqGrid('setGridWidth', 900);
    
    
        });
    
    //]]>
    </script>
      </head>
    
      <body>
          <div>
              <?php include ("grid.php");?>
          </div>
          <div id="pager"></div>
    
       </body>
    </html> 
    

    SEVER-SIDE(grid.php)

    <?php
    
    include '../dbc.php';
    page_protect();
    require_once 'jq-config.php';
    // include the jqGrid Class
    require_once ABSPATH."php/jqGrid.php";
    // include the driver class
    require_once ABSPATH."php/jqGridPdo.php";
    // Connection to the server
    
    $link = new PDO(DB_DSN,DB_USER,DB_PASSWORD);
    // Tell the db that we use utf-8
    $link ->query("SET NAMES utf8");
    
    // Create the jqGrid instance
    $grid = new jqGridRender($link);
    
    $username = $_SESSION['user_name'];
    $grid->SelectCommand = "SELECT * FROM tblcustomer_$username";
    // set the ouput format to json
    $grid->dataType = 'json';
    // Let the grid create the model
    $grid->setColModel();
    // Set the url from where we obtain the data
    $grid->setUrl('grid.php');
    // Set some grid options
    $grid->setGridOptions(array("rowNum"=>100,"sortname"=>"customerid","height"=>150));
    
    // Change some property of the field(s)
    $grid->setColProperty("lastlogin", array(
        "formatter"=>"date",
        "formatoptions"=>array("srcformat"=>"Y-m-d H:i:s","newformat"=>"m/d/Y"),
        "search"=>false,
        "width"=>"400"
        ));
    // Registration date
    $grid->setColProperty("registration_date", array(
        "formatter"=>"date",
        "formatoptions"=>array("srcformat"=>"Y-m-d H:i:s","newformat"=>"m/d/Y"),
        "search"=>false,
        "width"=>"400"
        ));
    $grid->setColProperty("expire_date", array(
        "formatter"=>"date",
        "formatoptions"=>array("srcformat"=>"Y-m-d H:i:s","newformat"=>"m/d/Y"),
        "search"=>false,
        "width"=>"400"
        ));
    $grid->setColProperty("customerid",array("width"=>"650"));
    $grid->setColProperty("hardware_id",array("width"=>"250"));
    $grid->setColProperty("username",array("width"=>"150"));
    $grid->setColProperty("password",array("width"=>"150"));
    $grid->setColProperty("email",array("width"=>"150"));
    $grid->setColProperty("lastipaddress",array("width"=>"100"));
    
    $grid->setFilterOptions(array("stringResult"=>true));
    $grid->navigator=true;
    $grid->setNavOptions('navigator',array("excel"=>true,"add"=>true,"edit"=>true,"view"=>true,"del"=>true,"search"=>true));
    // Enjoy
    $grid->renderGrid('#grid','#pager',true, null, null, true,true);
    $link = null;
    ?> 
    

    我觉得好像我已经尝试了一切,但如果有人看到我不能做的事,请随时告诉我!

    感谢您的帮助,

    埃文

3 个答案:

答案 0 :(得分:1)

你可以发布你的jqgrid初始化代码吗?以下是我应该按照你的描述做的一个例子:

$("#Building_8839_Transactions").jqGrid({

"colModel":[{"editable":false,"name":"TRANS_YEAR","label":"Year","width":"100.0"},{"name":"TRANS_DESCRIP","editable":true,"editrules":{"required":false},"label":"Action","width":"300.0"},{"name":"BLS_ID","hidden":true,"key":true}],

"shrinkToFit":false,
"sortorder":"desc",
"height":"auto",
"jsonReader":{"page":"PAGE","records":"RECORDS","repeatitems":false,"total":"TOTAL","root":"ROWS"},
"width":"500",
"viewrecords":true,
"editurl":"foobar.cfm",
"datatype":"json",
"caption":"BLS Transactions",
"rowNum":"15",
"url":"blah.cfm",
"sortname":"TRANS_YEAR"         
});

重要的位是“width”:“500”和“shrinkToFit”:false。试试那些。

答案 1 :(得分:0)

gridComplete没有jQuery(document)方法。你的意思是确定jQuery.ready。此外,只有在将if转换为网格后,才能在setGridWidth上使用<table id="grid">。此外,代码$.jgrid.no_legacy_api = false;$.jgrid.useJSON = true;应在jquery.jqGrid.min.js之前和grid.locale-en.js之后执行。所以代码应该是关于以下的

<script type="text/javascript" src="js/i18n/grid.locale-en.js"></script>
<script type="text/javascript">
    $.jgrid.no_legacy_api = false;
    $.jgrid.useJSON = true;
</script>
<script type="text/javascript" src="js/jquery.jqGrid.min.js"></script>

<script type="text/javascript">
//<![CDATA[
    $(document).ready(function() {
        // first create the grid
        $('#grid').jqGrid({
            // parameters of jqGrid
        }); 

        // now you can any time change the width of the grid
        $('#grid').jqGrid('setGridWidth', 900);
    }
//]]>
</script>

答案 2 :(得分:0)

通过PHP实现此目的的最佳方式:

// Set table with auto
$grid->setGridOptions(array( 
    "rowNum"=>10, 
    "sortable"=>true, 
    "rownumbers"=>true,
    "width"=>'auto',
    "altRows"=>true, 
    "multiselect"=>true, 
    "rowList"=>array(10,20,50), 
    )); 

// Set table with 100px
$grid->setGridOptions(array( 
    "rowNum"=>10, 
    "sortable"=>true, 
    "rownumbers"=>true,
    "width"=>1000,
    "altRows"=>true, 
    "multiselect"=>true, 
    "rowList"=>array(10,20,50), 
    )); 

Check my complete code.