EasyUI数据网格中的动态列

问题描述 投票:1回答:2

我有一组预定义的MySQL查询,我想将其结果显示在EasyUI数据网格(jQuery)上。

问题是每个查询返回不同的结果列,所以我不能使用类似于jQuery教程Dynamically change datagrid columns的内容,因为在PHP文件中执行查询之前不知道列标题。

但是,我的PHP脚本返回的每个JSON结果都包含数据列的名称。有什么方法可以将结果集映射到数据网格,而无需事先知道列(字段)名称,否则我的方法是错误的?我是jQuery的初学者,试图理解。

HTML:

<script>
  function exec_prepared(index){
    $('#tt').panel({title:prepared_statements[index]});
    $('#tt').datagrid('load',{index:index})
  }
</script>
<div id="dlg" class="easyui-dialog" style="width:600px; height:280px; padding:10px 20px"
  closed="false" buttons="#dlg-buttons">
  <div class="ftitle">Prepared Statements</div>
  <form id="fm" method="post" novalidate>
    <div class="fitem">
      <a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-search'"
        onclick="exec_prepared(0)">Test Query 1</a>
      <a href="#" class="easyui-linkbutton" data-options="iconCls:'icon-search'"
        onclick="exec_prepared(1);">Test Query 2</a>
    </div>
  </form>
</div>
</div>
<table id="tt" class="easyui-datagrid" style="width:600px;height:750px"
  url="getdata.php" rownumbers="true" pagination="true" pagesize="40">
</table>

PHP

switch $index
  case 0:
    $query="Select * from tableA";
    break;
  case 1:
    $query="Select * from tableB";
    break;
    ...
if (!$rs=mysql_query($query)){echo "Error in SQL line: ".__LINE__."<br>";echo $query;exit(1);}
$result["total"] = mysql_num_rows($rs);
$items = array();
while($row = mysql_fetch_object($rs)){
  array_push($items, $row);
}
$result["rows"] = $items;
echo json_encode($result);
jquery mysql datagrid jquery-easyui
2个回答
2
投票

您可以使用此代码:

$.ajax({            
   url:"data/getHeader.php?mo="+node.text,
   cache: false,
   timeout: 5000,   
   async: false,    
   success: function(data){
        var objekJSON=jQuery.parseJSON(data);       
        $('#dg').datagrid({                     
        url:urlData,
        fit:true,
        columns:objekJSON
        });
    }
});

这是JSON数据输出:

[[{"field":"CELLID","title":"CELLID"},{"field":"WEIGHTFORUSEDFREQ","title":"WEIGHTFORUSEDFREQ"},{"field":"TGL","title":"TGL"},{"field":"RNC_NAME","title":"RNC_NAME"}]]

PHP代码:

$result = array();
$mo=$_GET['mo'];
$sql="SHOW FIELDS FROM NPT.".$mo;
$rs = mysql_query($sql);
$nodeParent = array();
while($row = mysql_fetch_array($rs)){
    $node = array();    
    $node['field'] = $row['Field']; 
    $node['title'] = $row['Field'];
    array_push($nodeParent,$node);
}  
array_push($result,$nodeParent);
echo json_encode($result);

`

等待,以及HTMLcode:`

<table id="dg" border="false" rownumbers="true" pagination="true"
                                            fit="true" fitColumns="true" singleSelect="true">
                                    </table>

1
投票

请参考下面的链接,您可以动态构建列。

http://www.jeasyui.com/forum/index.php?topic=286.0

© www.soinside.com 2019 - 2024. All rights reserved.