EasyUI データグリッド (jQuery) に結果を表示する定義済みの MySQL クエリのセットがあります。
問題は、各クエリが異なる結果列を返すことです。そのため、PHP ファイルでクエリを実行する前に列のタイトルがわからないため、jQuery チュートリアルのセクションDynamically change datagrid columnsに似たものを使用できません。
ただし、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);