2013-04-03 36 views
2

希望有人可以指向我正确的方向..JQGrid - 标题和列不对齐

我很有时面临这个问题。

http://imgur.com/j8S9ft5

我尝试一些我从计算器

如发现解决方案jqGrid column not aligned with column headers

&其他来源,但没有解决我的问题。这个问题只发生在升级到Chrome 19或更高版本(我认为!)和safari 6之后。我注意到在我的第二台使用Safari 5的计算机上以及重新安装Chrome版本18时没有问题。

我试试通过从trirand.net下载更新一些js和css文件,但没有解决方案。

目前我正在运行Safari V6.0.1(8536.26.14)和Chrome版本26.0.1410.43。

感谢

更新2:更新到4.4.5图像http://imgur.com/NlY786x &后,我忘了提及这只有当我整合内部灯箱(facebox)

更新3发生: @奥列格我刚刚意识到之后更新到4.4.5或只是粘贴乌尔代码(内部评论) 我不能够使用我的自定义按钮了(工作B4)..没有任何事情发生。

我使用JavaScript &一个PHP jqGrid的,下面是我的代码:

<div align="center" id="grido"> </div> 
<script type="text/javascript"> 
//var lastSel; 
$(document).ready(function(){ 
// $('#grido').load('form/housekeeping/dun_grid.php'); 
}); 
</script> 

<script type="text/javascript"> 
<!-- dun_grid.js --> 

jQuery(document).ready(function(){ 

    var lastSel; 

jQuery("#dun_grid").jqGrid({ 
    url:'form/housekeeping/dun_griddata.php', 
    datatype: "json", 
    colNames:['DUN ID','DUN Code', 'DUN Name'],  
    colModel:[ 
     {name:'int_dunid',index:'int_dunid', hidden:true, align:"center", width:50}, 
     {name:'txt_dcode',index:'txt_dcode', editable:true, align:"center", width:150}, 
     {name:'txt_dname',index:'txt_dname', editable:true, align:"center", width:150}, 

      ], 
    pager: '#pagerdun', //pagination enable 
    rowNum:15, 
    rowList:[10,20,30], 
    width:430, 
    height:'auto', 
    sortname: 'txt_dcode', 
    sortorder: 'asc', 
    hidegrid: false, //show/hide grid button on caption header 

    viewrecords: true, //display the number of total records 
    editurl:"form/housekeeping/dun.php?mode=edit", 
    loadtext: "Loading Data, Please Wait...", 
    rownumbers:true, // add row numbers on left side 
    caption: '&nbsp; DUN List', 


ondblClickRow: function(id){ 
    if(id && id!==lastSel){ 
     jQuery('#dun_grid').restoreRow(lastSel); 
     lastSel=id; 
    } 
    jQuery('#dun_grid').editRow(id, true, "", refreshing); 
}, 

    onSelectRow: function(id){ 
    if(id && id!==lastSel){ 
     jQuery('#dun_grid').restoreRow(lastSel); 
     lastSel=id; 
    } 
}, 


}); /* end of jqgrid */ 


    jQuery("#dun_grid").jqGrid('navGrid','#pagerdun',{edit:false, add:false, view:false, del:true, search:true}, 
     {}, // edit 
     {}, // add 
     {url: 'form/housekeeping/dun.php?mode=delete'}, // delete 
     {multipleSearch : true}, 
     {closeOnEscape:true} 
    ); //end on navgrid 

    jQuery("#dun_grid").jqGrid('navButtonAdd','#pagerdun',{caption:"", buttonicon :'ui-icon-plus', 

     onClickButton:function(id){ 
      jQuery('#dun_grid').restoreRow(lastSel); 

       var datarow = {txt_dname:""}; 
       jQuery("#dun_grid").addRowData("0",datarow,"first"); 
       jQuery('#dun_grid').editRow("0", true, "", tiesto); 
       lastSel=id; 
      },//end of onClickButton 
     title:"New Record", 
     position:"last" 
     }); //end of custom button 


function refreshing(id){ /* refresh grid */ 
    jQuery('#dun_grid').trigger("reloadGrid"); 
    $.blockUI({ message:"Saving Data!!"}); 
     setTimeout($.unblockUI, 700); 
    } 

function tiesto(){ 
    jQuery('#dun_grid').restoreRow(lastSel); 
    jQuery('#dun_grid').trigger("reloadGrid"); 
    $.blockUI({ message:"New Data Saved!!"}); 
     setTimeout($.unblockUI, 700); 
    } 


}); /*end of document ready*/ 
</script> 


<div align="center" class="gridpanel" > 
<!--------------------------- ## grid for add/edit ## ------------------------------------------> 
    <table id="dun_grid" class="scroll" cellpadding="0" cellspacing="0"></table> 
    <!-- pager definition --> 
    <div id="pagerdun" class="scroll" style="text-align:center;"></div> 

</div> <!----------------------- grid panel end --------------------------------------> 

PHP

<?php 
ini_set("display_errors","1"); 
require_once('../../Connections/jq-config.php'); 

// include the jqGrid Class 
require_once "../../phpgrid/php/jqGrid.php"; 
// include the driver class 
require_once "../../phpgrid/php/jqGridPdo.php"; 
// Connection to the server 
$conn = new PDO(DB_DSN,DB_USER,DB_PASSWORD); 
// Tell the db that we use utf-8 
$conn->query("SET NAMES utf8"); 

// Create the jqGrid instance 
$grid = new jqGridRender($conn); 
$grid->SelectCommand = 'SELECT int_bankid, txt_bank_code , txt_bank_name, txt_bank_address FROM tbl_bank'; 

// set the ouput format to json 
$grid->dataType = 'json'; 
$grid->table ="tbl_bank"; 
$grid->setPrimaryKeyId("int_bankid"); 

$grid->setColModel(); 
$grid->setUrl('form/housekeeping/bank_grid.php'); 
$grid->setGridOptions(array("editurl"=>"form/housekeeping/bank.php?mode=edit")); 


// Set grid option 
$grid->setGridOptions(array( 
    "caption"=>"&nbsp; List of Banks", 
    "rownumbers"=>true, 
    "rowNum"=>10, 
    "rowList"=>array(10,20,50), 
    "sortname"=>"txt_bank_code", 
    "hoverrows"=>true, 
    "hidegrid"=>false, 
    "height"=>'auto', 
    "width"=>460, 
     "sortorder"=>'desc', 
    "loadtext" => "meloading data...", 
    "cmTemplate"=>array("searchoptions"=>array("sopt"=>array('eq','ne','lt','le','gt','ge','bw','bn','in','ni','ew','en','cn','nc'))) 
    )); 

// Change some property of the field(s) 
$grid->setColProperty("int_bankid", array("label"=>"ID", "width"=>50, "align"=>"center", "hidden"=>true)); 
$grid->setColProperty("txt_bank_code", array("label"=>"Code", "width"=>60, "align"=>"center", "editrules"=>array("required"=>true))); 
$grid->setColProperty("txt_bank_name", array("label"=>"Name", "width"=>130, "align"=>"center", "editrules"=>array("required"=>true))); 
$grid->setColProperty("txt_bank_address", array("label"=>"Address", "width"=>200, "align"=>"center")); 

// enable navbutton 
$grid->navigator = true; 

    $grid->setNavOptions('navigator', array("pdf"=>false,"excel"=>false,"add"=>false,"edit"=>false,"del"=>true,"view"=>false)); 
    $grid->setNavOptions('del',array("url"=>"form/housekeeping/bank.php?mode=delete")); 

// jscript for adding new row  
$reloading = <<<RELOAD 
function(id) 
    { 
    jQuery("#grid").trigger('reloadGrid'); 
    } 
RELOAD; 

$mycode = <<<NEWBUTTON 
function(id) 
    { 
    jQuery("#grid").jqGrid('restoreRow',lastSel); 
    jQuery("#grid").jqGrid('addRowData',"0",{txt_bank_code:''},"first"); 
    jQuery("#grid").jqGrid('editRow', "0", true,'',$reloading); 
    lastSel=id; 
    } 
NEWBUTTON; 

//jscript for inline editing  
$editrow = <<<DOUBLECLICK 
    function(rowid) 
    { 
     if (rowid && rowid !== lastSel) { 
      jQuery("#grid").jqGrid('restoreRow', lastSel); 
      lastSel = rowid; 
     } 
     jQuery("#grid").jqGrid('editRow', rowid, true,'',$reloading); 
    } 
DOUBLECLICK; 

//custom button setting for adding new row 
$buttonoptions = array("#pager", array("caption"=>"", 'buttonicon' =>'ui-icon-circle-plus', "onClickButton"=> "js:".$mycode)); 

// inserting custom button 
$grid->setGridEvent('ondblClickRow', $editrow); 
$grid->callGridMethod("#grid", "navButtonAdd", $buttonoptions); 
$grid->renderGrid('#grid','#pager',true, null, null, true,true); 
$conn = null; 


?> 
+0

不是每个jqGrid都有你描述的问题。 Screenshort可以理解你的问题,但它无法帮助找到问题的原因。您应该修改问题的文本,并包含可用于重现问题的JavaScript代码。如果您有一些在线演示,那么发布相应的URL会很好。在演示中使用'jquery.jqGrid.src.js'而不是'jquery.jqGrid.min.js'来调试问题很重要。 – Oleg

+0

我更新了jquery.jqGrid.min.js ...并且问题是最小化..但不完全解决... FYI @Oleg,我在2011年购买了php套件,并且我没有续订我的订阅,是否可以我只是更新文件,例如新的一个JS?现在,我试图编译我到目前为止在一个新的文件夹中分享到这里..我希望我可以让你进入系统,但有很多东西在那里,我不允许这样做..将更新。 .. – aznan

+0

你的意思是jqSuite?我自己并没有使用它,所以我不知道你可以在当前版本的jqGrid上升级它。我只是尝试将'jquery.jqGrid.src.js'和'jquery.jqGrid.min.js'升级到版本4.4.5。如果它不会帮助你修改'jquery.jqGrid.src.js'就像我描述的[这里](http://stackoverflow.com/a/10621951/315935)并生成新的'jquery.jqGrid.min.js'使用[Microsoft Ajax Minifier](http://ajaxmin.codeplex.com/)。 – Oleg

回答

0

尝试设置属性shrinkToFittrue;

shrinkToFit : true, 

如​​

此选项给出,如果设置,定义如何网格的列的宽度应被重新计算,并考虑到网格的宽度。如果这个值是真的,并且列的宽度也被设置,那么每一列按其宽度比例缩放。例如,如果我们定义两个宽度分别为80和120像素的列,但希望网格的宽度为300像素,则列将伸展以适应整个网格,并且分配给它们的额外宽度将取决于宽度的列本身和额外的宽度可用。
+0

thanx ajo,但那并没有解决我的问题。对齐provlem仍然存在.. – aznan

+0

@aznan你可以在这里分享你的代码或作为小提琴吗? –

+0

我'编译我的代码到一个更简单的版本;我更新了我的js,但出现了其他问题,就像我上面提到的那样。 – aznan

1

我有这个相同的问题,并能够通过调整CSS来解决它。我在th上设置了padding,这导致了问题。

您的th可能会继承padding,这会弄乱对齐。

如果th上的填充不同于网格单元格(尤其是padding-left和),则会破坏对齐。

+0

事情是我有2个地方,我用jqgrid .. 1.在正常页面上... 2.在灯箱(facebox),我看到问题... – aznan

0

将此代码添加到网格的gridComplete事件中。不要忘记您的网格id更换gridName

var objHeader = $("table[aria-labelledby=gbox_" + gridName+ "] tr[role=rowheader] th"); 

for (var i = 0; i < objHeader.length; i++) { 
    var col = $("table[id=" + gridName+ "] td[aria-describedby=" + objHeader[i].id + "]"); 
    var width= col.outerWidth(); 
    $(objHeader[i]).css("width", width); 
} 

工程与v.4.6.0。