angualr项目table拖拽列宽效果

Posted hero

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了angualr项目table拖拽列宽效果相关的知识,希望对你有一定的参考价值。

首先要有一个table的html列表 我就不上了,因为加载有异步的问题,所以我把js代码放到一个封装函数里面,表格加载出来之后调用函数,这个表格的dom就能找到了。下面是封装的js代码

  //拖拽调整列宽
        $rootScope.searchTable= function(){
          var tTD; //用来存储当前更改宽度的Table Cell,避免快速移动鼠标的问题
            var table = document.getElementsByClassName(‘table‘);
            console.log(table);
            for (j = 0; j < table[0].rows[0].cells.length; j++) {
                table[0].rows[0].cells[j].onmousedown = function () {
        //记录单元格
                    tTD = this;
                    if (event.offsetX > tTD.offsetWidth - 10) {
                        tTD.mouseDown = true;
                        tTD.oldX = event.x;
                        tTD.oldWidth = tTD.offsetWidth;
                    }
        //记录Table宽度
        //table = tTD; while (table.tagName != ‘TABLE‘) table = table.parentElement;
        //tTD.tableWidth = table.offsetWidth;
                };
                table[0].rows[0].cells[j].onmouseup = function () {
        //结束宽度调整
                    if (tTD == undefined) tTD = this;
                    tTD.mouseDown = false;
                    tTD.style.cursor = ‘default‘;
                };
                table[0].rows[0].cells[j].onmousemove = function () {
        //更改鼠标样式
                    if (event.offsetX > this.offsetWidth - 10)
                        this.style.cursor = ‘col-resize‘;
                    else
                        this.style.cursor = ‘default‘;
        //取出暂存的Table Cell
                    if (tTD == undefined) tTD = this;
        //调整宽度
                    if (tTD.mouseDown != null && tTD.mouseDown == true) {
                        tTD.style.cursor = ‘default‘;
                        if (tTD.oldWidth + (event.x - tTD.oldX) > 0)
                            tTD.width = tTD.oldWidth + (event.x - tTD.oldX);
        //调整列宽
                        tTD.style.width = tTD.width;
                        tTD.style.cursor = ‘col-resize‘;
        //调整该列中的每个Cell
                        table[0] = tTD;
                        while (table[0].tagName != ‘TABLE‘) table = table[0].parentElement;
                        for (j = 0; j < table[0].rows.length; j++) {
                            table[0].rows[j].cells[tTD.cellIndex].width = tTD.width;
                        }
        //调整整个表
        //table.width = tTD.tableWidth + (tTD.offsetWidth – tTD.oldWidth);
        //table.style.width = table.width;
                    }
                };
            }

        }


//下面是加载数据 调用函数的方法
  //列表搜索控制
        $rootScope.pagessizes = [10,20,50,100,500];
        $rootScope.getApiListFn = function (clearPage) {
          $rootScope.searchTable();
          // console.log(clearPage);
            $rootScope.allCheckState=false;

            $rootScope.apiState.apiLoading = true;
            // console.log($rootScope.posts);
            var sendData = angular.copy($rootScope.posts);
            sendData.pageNum = clearPage ? 1 : sendData.pageNum;
            // if (clearPage==undefined) {
            //   sendData.pageNum=1;
            // }
            // if (sendData.starttime) {
            //     var starttime = $filter("date")(sendData.starttime, ‘yyyy-MM-dd‘) + " 00:00:00";
            //     sendData.starttime = new Date(starttime).getTime();
            // }
            // if (sendData.orderTime) {
            //     sendData.orderTime = new Date(sendData.orderTime).getTime();
            // }
            // if (sendData.endtime) {
            //     var endtime = $filter("date")(sendData.endtime, ‘yyyy-MM-dd‘) + " 23:59:59";
            //     sendData.endtime = new Date(endtime).getTime();
            // }
            // $rootScope.pages={};
            // sendData.pageSize = 10; //每页多少个
            $http.post($rootScope.searchApi,sendData,$rootScope.postCfg).success(function(data){
              $rootScope.apiState.apiLoading = false;
              $rootScope.apiResultList=data.model.list;
              // $rootScope.posts = {};
              // $rootScope.postss = data.model;
              if (!data) {
                      data.model = {
                          list: [],
                          total: 0
                      };
                  }
              $rootScope.pages = data.model;
              // console.log(pages);
              // $rootScope.pages = data.model.navigatepageNums;
              $rootScope.pages.pageTotal =true;
              $rootScope.dataTotal = data.model.total;
              console.log($rootScope.pages);
            });
            // api($rootScope.searchApi, {
            //     data: sendData
            // }).then(function (data) {
            //     $rootScope.apiState.apiLoading = false;
            //     if (!data) {
            //         data = {
            //             list: [],
            //             total: 0
            //         };
            //     }
            //     $rootScope.apiResultList = data.list || data.commodityList|| data || [];
            //     // console.log($rootScope.apiResultList)
            //     var pages = Paging(sendData, (data.total || data.countNumber));
            //     $rootScope.pages = pages.pages;
            //     $rootScope.pageTotal = pages.pageTotal;
            //     $rootScope.dataTotal = data.total;
            // });
        };
        $rootScope.pageGo = function (index) {
            $rootScope.posts.pageNum = index;
            $rootScope.getApiListFn();
        };

        $rootScope.value="1";
        $rootScope.resetPagesize=function(value){
          // console.log(value);
          if (value=="0") {
            $rootScope.posts.pageSize=10;
          }
          if (value=="1") {
            $rootScope.posts.pageSize=20;
          }
          if (value=="2") {
            $rootScope.posts.pageSize=50;
          }
          if (value=="3") {
            $rootScope.posts.pageSize=100;
          }
          if (value=="4") {
            $rootScope.posts.pageSize=500;
          }
          console.log($rootScope.posts);
          // console.log($event);
          // console.log($parent.Carts.CartItemList[$index].Selected);
          // $rootScope.posts.pageSize = $rootScope.posts.pageSize;
          $rootScope.getApiListFn();
        }


        $rootScope.search = function () {
          // console.log(value);
          // console.log($rootScope.posts);
          // console.log(data);
            $rootScope.getApiListFn();
        };
        $rootScope.resetAll = function () {
            $rootScope.posts = {};
            $rootScope.posts.pageNum=1;
            $rootScope.posts.pageSize=20;
            $rootScope.getApiListFn();
            // $state.reload();
        };
        // $scope.resetLis="全部";

        // $(‘icon‘).on("click",function(){
        //   $(‘icon‘).toggleClass(‘icons‘)
        // })

        // $http.post("http://10.224.171.24:8089/cps-cas-web/helper/validateImg",{
        //   pageNum:1,
      	// 	pageSize:20
        // },postCfg).success(function(data){
        //   $scope.imgass = data;
      	// 	console.log(data);
      	// });

  拖拽效果差不多就这样



以上是关于angualr项目table拖拽列宽效果的主要内容,如果未能解决你的问题,请参考以下文章

element-ui table 表格组件实现可拖拽效果(行列)

基础固定列宽的表格及示例演示

html table 如何设置 使每行各列的列宽不一样??

elementui表格列左右移动

html中table列宽怎么设置

数据库关于拖拽排序功能的字段设计和逻辑