我有一组预定义的MySQL查询,其结果我想在EasyUI datagrid(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);
答案 0 :(得分: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>
`
我希望我的回答可以帮到你的一天。 terima kasih,:)
答案 1 :(得分:1)
请参考以下链接,您可以动态构建列。