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);
4

2 回答 2

3

您可以使用以下代码:

$.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>
于 2014-02-13T07:07:16.620 回答
1

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

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

于 2013-06-14T04:37:01.363 回答