zoukankan      html  css  js  c++  java
  • 第一阶段大作业 文件查看

    文件查看遇到一个问题,每个表的字段名不一样,所以用表格展示时要动态的展示,表格不固定。

    要分两次获取数据:1.表的字段名。2.表中的数据。

    layui.use('table', function(){
        var table = layui.table
        data_key=[]
         $.ajax({
             type: "GET",
             url: "/get_table_details_key?table_name={{ table_name }}&database_name={{ database_name }}",
             dataType: "json",
             success: function(data){
                 for (i=0;i<data.len;i++){
                     data_key[i]={field:data.data[i][0],title:data.data[i][1],120}
                 }
                 table.render({
                     elem: '#demo'
                     ,height: 620
                     ,url: '/get_table_details?table_name={{ table_name }}&database_name={{ database_name }}' //数据接口
                     ,page: true //开启分页
                     ,cols: [data_key]
                 });
             }
         });
          //第一个实例
    });

    完整的HTML:

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="utf-8">
      <title>Layui</title>
      <meta name="renderer" content="webkit">
      <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
      <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
      <link rel="stylesheet" href="../static/CSS/layui/css/layui.css"   media="all">
      <!-- 注意:如果你直接复制所有代码到本地,上述css路径需要改成你本地的 -->
    </head>
    <body>
    <div class="layui-layout layui-layout-admin">
      <div class="layui-header">
        <div class="layui-logo layui-hide-xs layui-bg-black">智能数据库系统</div>
        <!-- 头部区域(可配合layui 已有的水平导航) -->
        <ul class="layui-nav layui-layout-left">
          <!-- 移动端显示 -->
          <li class="layui-nav-item layui-show-xs-inline-block layui-hide-sm" lay-header-event="menuLeft">
            <i class="layui-icon layui-icon-spread-left"></i>
          </li>
    
          <li class="layui-nav-item layui-hide-xs"><a href="index">导入</a></li>
          <li class="layui-nav-item layui-hide-xs"><a href="table_list">数据字典</a></li>
          <li class="layui-nav-item layui-hide-xs"><a href="tolook">可视化</a></li>
        </ul>
        <ul class="layui-nav layui-layout-right">
          <li class="layui-nav-item layui-hide layui-show-md-inline-block">
            <a href="javascript:;">
              <img src="//tva1.sinaimg.cn/crop.0.0.118.118.180/5db11ff4gw1e77d3nqrv8j203b03cweg.jpg" class="layui-nav-img">
              tester
            </a>
            <dl class="layui-nav-child">
              <dd><a href="">Your Profile</a></dd>
              <dd><a href="">Settings</a></dd>
              <dd><a href="">Sign out</a></dd>
            </dl>
          </li>
          <li class="layui-nav-item" lay-header-event="menuRight" lay-unselect>
            <a href="javascript:;">
              <i class="layui-icon layui-icon-more-vertical"></i>
            </a>
          </li>
        </ul>
      </div>
    
      <div class="layui-side layui-bg-black">
        <div class="layui-side-scroll">
          <!-- 左侧导航区域(可配合layui已有的垂直导航) -->
          <ul class="layui-nav layui-nav-tree" lay-filter="test">
            <li class="layui-nav-item"><a href="/index">导入数据</a></li>
            <li class="layui-nav-item"><a href="/table_list">已导入数据</a></li>
          </ul>
        </div>
      </div>
    
      <div class="layui-body">
        <!-- 内容主体区域 -->
        <div style="padding: 15px;">
            <table id="demo" lay-filter="test"></table>
        </div>
      </div>
    
      <div class="layui-footer">
        <!-- 底部固定区域 -->
        寒蝉鸣泣之时
      </div>
    </div>
    <script src="../static/CSS/layui/layui.js">
    </script>
    <script src="../static/js/jquery-1.7.2.min.js">
    </script>
    <script>
    //JS
    layui.use(['element', 'layer', 'util'], function(){
      var element = layui.element
      ,layer = layui.layer
      ,util = layui.util
      ,$ = layui.$;
    
      //头部事件
      util.event('lay-header-event', {
        //左侧菜单事件
        menuLeft: function(othis){
          layer.msg('展开左侧菜单的操作', {icon: 0});
        }
        ,menuRight: function(){
          layer.open({
            type: 1
            ,content: '<div style="padding: 15px;">处理右侧面板的操作</div>'
            ,area: ['260px', '100%']
            ,offset: 'rt' //右上角
            ,anim: 5
            ,shadeClose: true
          });
        }
      });
    
    });
        layui.use('table', function(){
            var table = layui.table
            data_key=[]
             $.ajax({
                 type: "GET",
                 url: "/get_table_details_key?table_name={{ table_name }}&database_name={{ database_name }}",
                 dataType: "json",
                 success: function(data){
                     for (i=0;i<data.len;i++){
                         data_key[i]={field:data.data[i][0],title:data.data[i][1],120}
                     }
                     table.render({
                         elem: '#demo'
                         ,height: 620
                         ,url: '/get_table_details?table_name={{ table_name }}&database_name={{ database_name }}' //数据接口
                         ,page: true //开启分页
                         ,cols: [data_key]
                     });
                 }
             });
              //第一个实例
        });
    
    </script>
    </body>
    </html>

    请求处理部分:

    @app.route('/get_table_details_key')
    def get_table_details_key():
        table_name=request.values.get("table_name")
        database_name=request.values.get("database_name")
        english_china=[]
        english_china=dictionary.get_table_details_key(table_name,database_name)
        print("表key值:(table_name="+table_name+",database_name="+database_name+")")
        print(english_china)
        return jsonify({"data": english_china,"len":len(english_china)})
        pass
    
    @app.route('/get_table_details')
    def get_table_details():
        table_name=request.values.get("table_name")
        database_name=request.values.get("database_name")
        table_data=dictionary.get_table_details(table_name,database_name)
        english_china=dictionary.get_table_details_key(table_name,database_name)
        data_re=[]
        flag={}
        count=len(table_data)
        for table_data_flag in table_data:
            flag = {}
            for i in range(len(english_china)):
                flag[english_china[i][0]] = table_data_flag[i]
            data_re.append(flag)
        print("表的内容:(table_name="+table_name+",database_name="+database_name+")")
        print(data_re)
        return jsonify({"code": 0, "msg": "", "count": count, "data": data_re})

    数据库查询部分:

    def get_table_details(name_table,database_name):
        #中文名,英文名,数据类型,单位
        # select column_name,column_comment ,data_type,CHARACTER_MAXIMUM_LENGTH,COLUMN_DEFAULT
        # from information_schema.columns
        # where table_name='表名' and table_schema='bigwork_data'
        #英文名,中文名,字段类型,字段长度,缺省值,单位在数据的第一行
        sql="select * from "+name_table
        res = query_mysql(sql)
        return res
        pass
    
    def get_table_details_key(name_table,database_name):
        sql = "select column_name,column_comment " \
              "from information_schema.columns " \
              "where table_name='" + name_table + "' and table_schema='" + database_name + "'"
        res = query_mysql(sql)
        return res
  • 相关阅读:
    java设计模式——多例模式
    Java多例模式
    设计模式(四)——多例模式
    IoC是一个很大的概念,可以用不同的方式实现。
    现有的框架实际上使用以下三种基本技术的框架执行服务和部件间的绑定:
    IOC关注服务(或应用程序部件)是如何定义的以及他们应该如何定位他们依赖的其它服务
    IoC最大的好处是什么?
    Java – Top 5 Exception Handling Coding Practices to Avoid
    @Spring MVC请求处理流程
    Spring Bean的生命周期(非常详细)
  • 原文地址:https://www.cnblogs.com/fengchuiguobanxia/p/15511591.html
Copyright © 2011-2022 走看看