PHP+Mysql+easyui点击左侧tree菜单对应表名右侧动态生成datagrid加载表单数据(二)
关于tree菜单生成,参考我的另一篇博文地址tree 菜单
实现功能:点击左侧tree菜单中的table,右侧通过datagrid加载出该表对用的所有数据
$('#tree').tree(
{
url:'tree_getData.php',
onClick:function(node){
//判断点击的节点是否是子节点是子节点就创建datagrid,否则就return打开这个节点
var Nodes=$(this).tree("isLeaf",node.target);
if(Nodes==false)
{
return;
}else{
//获取子节点中的text值,后台text值为表名tablename;
var Parent=$(this).tree('getParent',node.target);
//获取选中的子节点的父节点 Parent.text;//数据库名称
//AddTable(node.text,Parent.text);
CreateGrid(node.text,Parent.text);//动态创建datagrid,并加载数据
}
}
});
<table id="dg"></table>
<script>
$('#dg').datagrid({
url:'datagrid_data.json',
columns:[[
{field:'code',title:'Code',width:100},
{field:'name',title:'Name',width:100},
{field:'price',title:'Price',width:100,align:'right'}
]]
});
</script>
生成表格的难点在columns那一项,如何将获取到的列名拼凑那样形式。
使用push()方法:
arrayObject.push(newelement1,newelement2,....,newelementX)
定义和用法
push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度
//添加数据表格
function CreateGrid(tablename,database)
{
//use database && select * from tablename
url="actForm.php";
$.post(url,{
"key":"1", //key值是后台判断使用那个函数
"table_name":tablename
},function(data)
{
//处理返回结果并显示表格
if(!data)
{
alert("没有数据返回!");
}else{
// var col=JSON.parse(data);
var cols=[];
for(var i=0;i<data.length;i++)
{
var field=data[i];
cols.push({field:field,title:field,width:100}); //(1)拼凑成datagrid中的columns的值
}
//动态创建dagagrid并加载数据
$('#dg').datagrid({
url:'actForm.php?table_name='+tablename+"&data_base="+database+"&key=2",
singleSelect:true,
columns:[cols], //
toolbar:[{
iconCls:'icon-edit',
handler:function()
{
//修改数据 }
},'-',{
iconCls:'icon-add',
handler:function()
{
//添加数据 }
},'-',
{
iconCls:'icon-remove',
handler:function()
{
//删除数据
var row=$('#dg').datagrid('getSelected');
var keyid=data[0]; //选中行的主键名,这里a,data[0]都是字符串,不是属性值
if(row){
//alert(row.keyid) 无法获取值 (2)
//alert(row[keyid]);成功获取到值
url="actForm.php?table_name="+tablename+"&data_base="+database+"&key=3";
$.post(url,{
keyid:row[keyid], //不要跟url中key同名,不然会出错
keyname:keyid},
function(data){
if('true'==data)
{
alert('删除成功!');
}else{
alert('删除失败');
}
},"json");
}
}
}],
}); //载入本地json格式的数据
}
},"json");
}
<?php //获取表的所有列名
function getColumns()
{
require('./mysql_connect/mysql_connect.php');
$table_name=$_REQUEST['table_name'];
$db_select=@mysqli_select_db($dbc,'information_schema');
if(!$dbc)
{
echo "Connect Error".mysqli_connect_error($dbc);
}else
{
//连接成功,从表COLUMNS获取表的所有列名
//echo $table_name;
$sql="select COLUMN_NAME from columns where TABLE_NAME='$table_name'";
$res=@mysqli_query($dbc,$sql);
$items=array();
if($res)
{
while($row=mysqli_fetch_array($res,MYSQLI_ASSOC))
{
$tablename=$row['COLUMN_NAME'];
array_push($items,$tablename);
} echo json_encode($items);
mysqli_close($dbc);
}
else{
echo "查询失败,请检查SQL语句!";
} }
} //获取表的所有信息
function getData()
{
require('./mysql_connect/mysql_connect.php');
//获取数据库名,以及对应表名
$table_name=$_REQUEST['table_name'];
$data_base=$_REQUEST['data_base'];
$db_select=@mysqli_select_db($dbc,$data_base); if(!$dbc)
{
echo "Connect Error".mysqli_connect_error($dbc);
}else{
//连接成功
$sql="SELECT * FROM $table_name";
$rs=mysqli_query($dbc,$sql);
$items=array();
while($row=mysqli_fetch_object($rs))
{
array_push($items,$row);
}
echo json_encode($items);
mysqli_close($dbc);
}
}
//删除数据
function delData()
{
require('./mysql_connect/mysql_connect.php');
//获取数据库名,以及对应表名,以及删除数据的主键
$table_name=$_REQUEST['table_name'];
$data_base=$_REQUEST['data_base'];
$key=$_REQUEST['keyid'];
$keyname=$_REQUEST['keyname'];
$db_select=@mysqli_select_db($dbc,$data_base); if(!$dbc)
{
echo "Connect Error".mysqli_connect_error($dbc);
}else{
//连接成功
$sql="DELETE FROM $table_name WHERE $keyname=$key";
$res=mysqli_query($dbc,$sql);
if($res)
{
echo json_encode("true");
}
else{
echo json_encode("false");
}
mysqli_close($dbc);
} }
$case=$_REQUEST['key'];
if('1'==$case)
{
getColumns();
}elseif('2'==$case)
{
getData();
}elseif('3'==$case)
{
delData();
}else{
echo "key错误!".$case;
}
?>

<html>
<head>
<meta charset="utf-8">
<title>数据库管理系统</title>
<link rel="stylesheet" type="text/css" href="jslib/jquery-easyui-1.4.2/themes/default/easyui.css" />
<link rel="stylesheet" type="text/css" href="jslib/jquery-easyui-1.4.2/themes/icon.css" />
<link rel="stylesheet" type="text/css" href="/css/base.css">
<link rel="stylesheet" type="text/css" href="/css/layout.css"> <script type="text/javascript" src="/jslib/jquery-easyui-1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="/jslib/jquery-easyui-1.4.2/jquery.placeholder-1.1.9.js"></script>
<script type="text/javascript" src="/jslib/jquery-easyui-1.4.2/jquery.easyui.min.js"></script>
<body>
<div id="win" class="easyui-window" title="数据库管理平台by Leetao" style="width:600px;height:600px;top:100px;"
data-options="modal:true">
<div class="easyui-layout" fit="true">
<div region="west" border="true" style="width:200px;height:600px">
<ul id="tree"></ul>
</div>
<div region="center" border="true" id="result">
<table id="dg">
</table>
</div>
</div> </div> <script>
$('#tree').tree(
{
url:'tree_getData.php',
onClick:function(node){
//判断点击的节点是否是子节点是子节点就创建datagrid,否则就return打开这个节点
var Nodes=$(this).tree("isLeaf",node.target);
if(Nodes==false)
{
return;
}else{
//获取子节点中的text值,后台text值为表名tablename;
var Parent=$(this).tree('getParent',node.target);
//获取选中的子节点的父节点 Parent.text;
//AddTable(node.text,Parent.text);
CreateGrid(node.text,Parent.text);
}
}
});
/*
//添加新的选项卡
function AddTable(tablename,database)
{
if($('#Tabs').tabs('exists',tablename))
{
//如果该选项卡存在,选中
$('#Tabs').tabs('select',tablename);
}else{
//如果不存在,则创建
$('#Tabs').tabs("add",{
title:tablename,
content:CreateFrame(tablename,database),
closable:true,
});
}
}
*/
//添加数据表格
function CreateGrid(tablename,database)
{
//use database && select * from tablename
url="actForm.php";
$.post(url,{
"key":"1",
"table_name":tablename
},function(data)
{
//处理返回结果并显示表格
if(!data)
{
alert("没有数据返回!");
}else{
// var col=JSON.parse(data);
var cols=[];
for(var i=0;i<data.length;i++)
{
var field=data[i];
cols.push({field:field,title:field,width:100});
} $('#dg').datagrid({
url:'actForm.php?table_name='+tablename+"&data_base="+database+"&key=2",
singleSelect:true,
columns:[cols],
toolbar:[{
iconCls:'icon-edit',
handler:function()
{
//修改数据 }
},'-',{
iconCls:'icon-add',
handler:function()
{
//添加数据 }
},'-',
{
iconCls:'icon-remove',
handler:function()
{
//删除数据
var row=$('#dg').datagrid('getSelected');
var keyid=data[0]; //选中行的主键名,这里a,data[0]都是字符串,不是属性值
if(row){
//alert(row.key) 无法获取值
//alert(row[key]);成功获取到值
url="actForm.php?table_name="+tablename+"&data_base="+database+"&key=3";
$.post(url,{
keyid:row[keyid], //不要跟url中key同名,不然会出错
keyname:keyid},
function(data){
if('true'==data)
{
alert('删除成功!');
}else{
alert('删除失败');
}
},"json");
}
}
}],
}); //载入本地json格式的数据
}
},"json");
}
</script>
</head> </body>
</html>

PHP+Mysql+easyui点击左侧tree菜单对应表名右侧动态生成datagrid加载表单数据(二)的更多相关文章
- Easyui datagrid加载数据时默认全选的问题
问题描述: 最近使用 Easyui datagrid 展示数据,之前一直使用很正常,今天出现了一个怪异问题 加载数据后,只要点击选中列 ck 的任意行或多行,再刷新时整个datagrid的所有数据都 ...
- 解决easyui datagrid加载数据时,checkbox列没有根据checkbox的值来确定是否选中
背景: 昨天帮朋友做一个easyui datagrid的小实例时,才发现easyui datagrid的checkbox列,没有根据值为true或false来选中checkbox,当时感觉太让人失 ...
- easyui datagrid加载数据和分页
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding=& ...
- easyui datagrid 加载静态文件中的json数据
本文主要介绍easyui datagrid 怎么加载静态文件里的json数据,开发环境vs2012, 一.json文件所处的位置 二.json文件内容 {"total":28,&q ...
- EasyUI 动态生成列加分页
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=&qu ...
- mysql 不能加载表问题
记录一次 mysql 5.7 下,出现重启数据库后不能加载特定表的问题处理. 搜索了很多的类似的错误,大多都是说因为外键同名的索引丢失的情况.但在5.7这个版本下,会禁止更新外键关联的索引. 最后经过 ...
- SpringMVC+EasyUI实现页面左侧导航菜单
1. 效果图展示 2. 工程目录结构 注意: webapp下的resources目录放置easyui和js(jQuery文件是另外的) 3. 代码 index.j ...
- easyUi load方法重新加载表单的数据
1.表单回显数据的方法 <script> //方法一 function loadLocal(){ $('#ff').form('load',{ name:'myname', email:' ...
- jquery easyui datagrid 加载保存好的自定义设置的列属性
直接附上源代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <t ...
随机推荐
- debian下NTFS分区无法访问解决
打开终端 # ntfsfix /dev/sda3 (/dev/sda3是上图中划红框的部分,根据实际情况替换) 如果这个磁盘可以正常挂载,说明问题已经解决了,其他磁盘在重启后也可以挂载了 如果不想重启 ...
- Bash 中的 _ 是不是环境变量
首先,我们想到的会是 export(等价于 declare -x)命令: $ export | grep 'declare -x _=' 没有找到,那么结论就是 _ 不是环境变量?当然没那么简单,否则 ...
- log4j的使用详细解析
1 Log4j配置说明 1.1 配置文件Log4j可以通过java程序动态设置,该方式明显缺点是:如果需要修改日志输出级别等信息,则必须修改java文件,然后重新编译,很是麻烦: log4j也可以通过 ...
- tyvj1194 划分大理石
描述 有价值分别为1..6的大理石各a[1..6]块,现要将它们分成两部分,使得两部分价值之和相等,问是否可以实现.其中大理石的总数不超过20000. 输入格式 有多组数据!所以可能有多行如果有0 ...
- [Scala] 快学Scala A1L1
基础 1.1 声明值和变量 在Scala中,鼓励使用val; 不需要给出值或变量的类型,这个信息可以从初始化表达式推断出来.在必要的时候,可以指定类型. 在Scala中,仅当同一行代码中存在多条语句时 ...
- Vundle的安装
1.Vundle.vim 安装 https://github.com/VundleVim/Vundle.vim 2.插件安装https://github.com/yangyangwithgnu/use ...
- C和指针 第十一章 动态内存分配
声明数组时,必须指定数组长度,才可以编译,但是如果需要在运行时,指定数组的长度的话,那么就需要动态的分配内存. C函数库stdlib.h提供了两个函数,malloc和free,分别用于执行动态内存分配 ...
- saltstack(主机改名)
已存在salt中的机器,为了规范,需要将这批主机改名 操作流程:在master把这批机器剔除:然修改这批机器的主机名.在/etc/salt目录下.用mv把minion_id和pki的目录重命名.重启s ...
- mysql查询语句select-子查询
1 子查询定义 在一个表表达中可以调用另一个表表达式,这个被调用的表表达式叫做子查询(subquery),我么也称作子选择(subselect)或内嵌选择(inner select).子查询的结果传递 ...
- spring aop 环绕通知around和其他通知的区别
前言: spring 的环绕通知和前置通知,后置通知有着很大的区别,主要有两个重要的区别: 1) 目标方法的调用由环绕通知决定,即你可以决定是否调用目标方法,而前置和后置通知 是不能决定的,他们只 ...