Maison interface Web js tutoriel Comment réaliser la fusion automatique des tables de données layui (code)

Comment réaliser la fusion automatique des tables de données layui (code)

Sep 07, 2018 pm 04:43 PM
layui 数据表格

Le contenu de cet article explique comment réaliser la fusion automatique (code) des tables de données layui. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Description des exigences :

Dans le tableau de données, pour afficher les données selon une certaine catégorie, il existe plusieurs subdivisions imbriquées sous la catégorie, telles que les surnoms de province et de ville, la province. Les villes en dessous, plusieurs quartiers en dessous de la ville et les surnoms en dessous des quartiers sont nécessaires, et les boutons d'opération sont regroupés en catégories (c'est-à-dire que les boutons d'opération doivent être fusionnés en fonction des catégories).

Analyse des exigences :

À l'exception de la colonne d'opération, la colonne de gauche est utilisée comme unité de base pour la fusion inter-lignes

La colonne d'opération peut sélectionner n'importe quelle colonne comme unité de base (cela doit être amélioré).

Page originale :

Comment réaliser la fusion automatique des tables de données layui (code)

Page traitée :

Comment réaliser la fusion automatique des tables de données layui (code)

Méthode :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

var execRowspan = function(fieldName,index,flag){

  // 1为不冻结的情况,左侧列为冻结的情况

  let fixedNode = index=="1"?$(".layui-table-body")[index - 1]:(index=="3"?$(".layui-table-fixed-r"):$(".layui-table-fixed-l"));

  // 左侧导航栏不冻结的情况

  let child = $(fixedNode).find("td");

  let childFilterArr = [];

  // 获取data-field属性为fieldName的td

  for(let i = 0; i < child.length; i++){

    if(child[i].getAttribute("data-field") == fieldName){

      childFilterArr.push(child[i]);

    }

  }

  // 获取td的个数和种类

  let childFilterTextObj = {};

  for(let i = 0; i < childFilterArr.length; i++){

    let childText = flag?childFilterArr[i].innerHTML:childFilterArr[i].textContent;

    if(childFilterTextObj[childText] == undefined){

      childFilterTextObj[childText] = 1;

    }else{

      let num = childFilterTextObj[childText];

      childFilterTextObj[childText] = num*1 + 1;

    }

  }

  let canRowspan = true;

  let maxNum = 9999;

  for(let i = 0; i < childFilterArr.length; i++){

    maxNum = $(childFilterArr[i]).prev().attr("rowspan")&&fieldName!="8"?$(childFilterArr[i]).prev().attr("rowspan"):maxNum;

    let key = flag?childFilterArr[i].innerHTML:childFilterArr[i].textContent;

    let tdNum = childFilterTextObj[key];

    let curNum = maxNum<tdNum?maxNum:tdNum;

    let nextKey;

 

    for(let j =1;j<curNum&&(i+j<childFilterArr.length);j++){

      nextKey = flag?childFilterArr[i+j].innerHTML:childFilterArr[i+j].textContent;

      if(key!=nextKey&&curNum>1){

        canRowspan = true;

        curNum = j;

      }

    }

    if(canRowspan){

      childFilterArr[i].setAttribute("rowspan",curNum);

      if($(childFilterArr[i]).find("p.rowspan").length>0){//设置td内的p.rowspan高度适应合并后的高度

        $(childFilterArr[i]).find("p.rowspan").parent("p.layui-table-cell").addClass("rowspanParent");

        $(childFilterArr[i]).find("p.layui-table-cell")[0].style.height= curNum*38-10 +"px";

      }

      canRowspan = false;

    }else{

      childFilterArr[i].style.display = "none";

    }

    if(maxNum){

      maxNum--;

    }

    if(--childFilterTextObj[key]==0||maxNum==0||(nextKey!=undefined&&key!=nextKey)){

      canRowspan = true;

    }

  }

}

//合并数据表格行

var layuiRowspan = function(fieldNameTmp,index,flag){

  let fieldName = [];

  if(typeof fieldNameTmp == "string"){

    fieldName.push(fieldNameTmp);

  }else{

    fieldName = fieldName.concat(fieldNameTmp);

  }

  for(let i = 0;i<fieldName.length;i++){

    execRowspan(fieldName[i],index,flag);

  }

}

Copier après la connexion
Utilisation :

HTML :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

<p class="box">

<table class="layui-table" id="test" lay-data="{page:true,limit:50}"  lay-filter="test">

  <thead>

  <tr>

    <th lay-data="{field:&#39;province&#39;, width:200}">省</th>

    <th lay-data="{field:&#39;city&#39;, width:200}">市</th>

    <th lay-data="{field:&#39;zone&#39;, width:200}">区</th>

    <th lay-data="{field:&#39;username&#39;, width:200}">昵称</th>

    <th lay-data="{field:&#39;joinTime&#39;, width:150}">加入时间</th>

    <th lay-data="{field:&#39;sign&#39;, minWidth: 180}">签名</th>

    <th lay-data="{field:&#39;8&#39;,align:&#39;right&#39;}">基本操作</th>

  </tr>

  </thead>

  <tbody>

  <tr>

    <td>浙江</td>

    <td>杭州</td>

    <td>西湖区</td>

    <td>贤心1</td>

    <td>2016-11-28</td>

    <td>人生就像是一场修行 A</td>

    <td>

      <p class="layui-btn-group" style="overflow:visible;">

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">按钮1</a>

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">按钮2</a>

      </p>

    </td>

  </tr>

  <tr>

    <td>浙江</td>

    <td>这个</td>

    <td>西湖区</td>

    <td>贤心2</td>

    <td>2016-11-29</td>

    <td>人生就像是一场修行 B</td>

    <td>

      <p class="layui-btn-group" style="overflow:visible;">

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">按钮1</a>

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">按钮2</a>

      </p>

    </td>

  </tr>

  <tr>

    <td>浙江</td>

    <td>丽水</td>

    <td>莲都区</td>

    <td>贤心3</td>

    <td>2016-11-30</td>

    <td>人生就像是一场修行 C</td>

    <td>

      <p class="layui-btn-group" style="overflow:visible;">

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">按钮1</a>

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">按钮2</a>

      </p>

    </td>

  </tr>

  <tr>

    <td>浙江</td>

    <td>丽水</td>

    <td>莲都区</td>

    <td>贤心3</td>

    <td>2016-19-30</td>

    <td>人生就像是一场修行 C</td>

    <td>

      <p class="layui-btn-group" style="overflow:visible;">

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">按钮1</a>

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">按钮2</a>

      </p>

    </td>

  </tr>

  <tr>

    <td>浙江</td>

    <td>位置</td>

    <td>莲都区</td>

    <td>贤心3</td>

    <td>2016-11-30</td>

    <td>人生就像是一场修行 C</td>

    <td>

      <p class="layui-btn-group" style="overflow:visible;">

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">按钮1</a>

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">按钮2</a>

      </p>

    </td>

  </tr>

  <tr>

    <td>湖北</td>

    <td>位置</td>

    <td>莲都区</td>

    <td>贤心3</td>

    <td>2016-11-30</td>

    <td>人生就像是一场修行 C</td>

    <td>

      <p class="layui-btn-group" style="overflow:visible;">

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">按钮1</a>

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">按钮2</a>

      </p>

    </td>

  </tr>

  <tr>

    <td>湖北</td>

    <td>这个</td>

    <td>1区</td>

    <td>贤心3</td>

    <td>2016-11-30</td>

    <td>人生就像是一场修行 C</td>

    <td>

      <p class="layui-btn-group" style="overflow:visible;">

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">按钮1</a>

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">按钮2</a>

      </p>

    </td>

  </tr>

  <tr>

    <td>湖北</td>

    <td>这个</td>

    <td>1区</td>

    <td>贤心3</td>

    <td>2016-11-30</td>

    <td>人生就像是一场修行 C</td>

    <td>

      <p class="layui-btn-group" style="overflow:visible;">

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">按钮1</a>

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">按钮2</a>

      </p>

    </td>

  </tr>

  <tr>

    <td>湖北</td>

    <td>这个</td>

    <td>1区</td>

    <td>贤心3</td>

    <td>2016-11-30</td>

    <td>人生就像是一场修行 B</td>

    <td>

      <p class="layui-btn-group" style="overflow:visible;">

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">按钮1</a>

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">按钮2</a>

      </p>

    </td>

  </tr>

  <tr>

    <td>湖北</td>

    <td>这个</td>

    <td>1区</td>

    <td>贤心</td>

    <td>2016-11-30</td>

    <td>人生就像是一场修行 B</td>

    <td>

      <p class="layui-btn-group" style="overflow:visible;">

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">按钮1</a>

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">按钮2</a>

      </p>

    </td>

  </tr>

  <tr>

    <td>湖北</td>

    <td>这个</td>

    <td>1区</td>

    <td>贤心</td>

    <td>2016-11-30</td>

    <td>人生就像是一场修行 C</td>

    <td>

      <p class="layui-btn-group" style="overflow:visible;">

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">按钮1</a>

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">按钮2</a>

      </p>

    </td>

  </tr>

  <tr>

    <td>湖北</td>

    <td>这个</td>

    <td>1区</td>

    <td>贤心</td>

    <td>2016-11-30</td>

    <td>人生就像是一场修行 D</td>

    <td>

      <p class="layui-btn-group" style="overflow:visible;">

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">按钮1</a>

        <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">按钮2</a>

      </p>

    </td>

  </tr>

  </tbody>

</table>

  </p>

Copier après la connexion

1

2

3

4

5

6

7

8

layui.use(&#39;table&#39;, function(){

        var table = layui.table;

        table.init(&#39;test&#39;,{done:function(res,curr,count){

          layuiRowspan(&#39;province&#39;,1);

          layuiRowspan([&#39;city&#39;,&#39;zone&#39;,&#39;username&#39;,&#39;joinTime&#39;,&#39;sign&#39;],1);//支持数组

          layuiRowspan("8",1,true);

        }

      });})

Copier après la connexion
Recommandations associées :

layui implémente la pagination dynamique et statique des tables de données

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment obtenir des données de formulaire dans Layui Comment obtenir des données de formulaire dans Layui Apr 04, 2024 am 03:39 AM

Comment obtenir des données de formulaire dans Layui

Comment configurer le saut sur la page de connexion Layui Comment configurer le saut sur la page de connexion Layui Apr 04, 2024 am 03:12 AM

Comment configurer le saut sur la page de connexion Layui

Lequel est le meilleur, layui ou elementui ? Lequel est le meilleur, layui ou elementui ? Apr 04, 2024 am 04:15 AM

Lequel est le meilleur, layui ou elementui ?

Comment Layui met en œuvre l'auto-adaptation Comment Layui met en œuvre l'auto-adaptation Apr 26, 2024 am 03:00 AM

Comment Layui met en œuvre l'auto-adaptation

Comment exécuter Layui Comment exécuter Layui Apr 04, 2024 am 03:42 AM

Comment exécuter Layui

Dans quel langage est le framework Layui ? Dans quel langage est le framework Layui ? Apr 04, 2024 am 04:39 AM

Dans quel langage est le framework Layui ?

La différence entre le framework layui et le framework vue La différence entre le framework layui et le framework vue Apr 26, 2024 am 01:27 AM

La différence entre le framework layui et le framework vue

Quelle est la différence entre layui et vue ? Quelle est la différence entre layui et vue ? Apr 04, 2024 am 03:54 AM

Quelle est la différence entre layui et vue ?

See all articles