开发者社区> 问答> 正文

当使用Spring MVC在另一个数据表中单击一行时,使用数据启动一个新的数据表

基本上我想在一页上有两个表。在表1中,我想存储与区域有关的信息,在表2中,我想显示与被单击区域有关的人员信息。

我的后端使用Spring MVC生成数据。

表1以这种方式启动:

function createTable1() {
            tableOne = $('#table').dataTable({
                ajax: function (data, callback, settings) {
                    var param = {};
                    param.type = "3";
                    $.ajax({
                        type: "post",
                        url: '/area/getareainfo',
                        dataType: "json",
                        data: param,
                        success: function (result) {
                           if (result) {
                                var returnData = {};
                                returnData.data = result;
                                callback(returnData);
                            }
                        }
                    });
                },

                columns: [
                    {"data": "label"},
                    {"data": "value"},
                    {"data": "count" },
                    {"data": "count" },
                    {"data": "count"}
                ]
            });
        }

我有一段非常相似的代码来创建表2,但我不知道它是否会正常工作(除非我将destroy选项设置为true)

$('#table tbody').on('click', 'tr', function () {
                createTable2();
            });

我的任务是编写一个控制器,该控制器中继表1和表2的数据,以某种方式连接表1和表2之间的数据,并显示并工作两个数据表。我应该如何构造呢?(我对编写Spring MVC的经验为零,并且不知道如何使用ajax从表1信息和后端获取表2数据)

非常感谢您的投入!

展开
收起
垚tutu 2019-12-04 17:09:51 977 0
1 条回答
写回答
取消 提交回答
  • #include

    无需销毁表2,可以改用table2.ajax.reload()!

    另外,无需在table1和table2之间连接数据。您可以为两个表使用单独的Datatables定义,并为两个表使用单独的AJAX url返回JSON。例如,假设您的table1的JSON如下所示:

    {
    "data": [{
            "label": "1",
            "value": "2",
            "count": "3"
        },
        {
            "label": "11",
            "value": "22",
            "count": "33"
        }
    ]
    }
    然
    后```  
    ,您的第二个数据表初始化代码可以如下:
    ```js
    tableTwo = $('#table2').dataTable({
                ajax: "/staff/getStaffInfoForArea?"+areaCode,
                columns: [
                    //your columns
                ]
            });
    
    

    哪里“ / staff / getStaffInfoForArea?” 是您的服务器端URL,附加有areaCode请求参数,而areaCode是全局javascript变量。您必须将单击信息的行存储在areaCode变量中,如下所示:

    $('#table tbody').on('click', 'tr', function () {
                var rowSelected = tableOne.row({selected: true}).data();
                areaCode = rowSelected.label //assuming 'label' is the key which store your area specific info
                tableTwo.ajax.reload();
            });
    
    

    在Spring MVC方面,用于获取表2数据的Controller方法如下所示:

    @RequestMapping(value = "/staff/getStaffInfoForArea", method = RequestMethod.GET)
    public @ResponseBody String getPaginatedSiteIdents(@RequestParam String areaCode) {
    
    //put all your Java code to retrieve staff info for area here
    //and return a JSON string with "data" array
    }
    
    

    当然,这里有很多细节您需要注意。希望这给您一个起点!

    2019-12-04 17:10:20
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多