Vueはel-tableを使用して列と行を動的に結合します

Vueはel-tableを使用して列と行を動的に結合します

この記事の例では、el-tableを使用して列と行を動的にマージするVueの具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。

数日前にプロジェクトでフォームのマージが必要になったので、将来使用するためにここに記録しました。

まず、element-ui の el-table を使用します。ドキュメントでは、行または列を結合する span-method メソッドが提供されています。詳しくない場合は、element ドキュメントのアドレスを確認してください。ただし、ドキュメントで提供されている例は非常に単純であり、複雑なページのニーズを満たすことができないため、データを処理する必要があります。

次のコード:

行と列のリストデータを取得します(データ){
            自分自身 = this とします。
            自己の行と列 = [];
            自己.rowRoomColumn = [];
            (var i = 0; i < データ長さ; i++) {
                (i === 0)の場合{
                    // 最初のレコードの場合(つまり、インデックスが0の場合)、配列に1を追加します
                    行と列をプッシュします(1);
                    自己位置 = 0;
                    自己.rowRoomColumn.push(1);
                    自己.posT = 0;
                } それ以外 {
                    //data[i].typeDescはインターフェースから読み取ったフィールド情報です。以下も同様です。if (data[i].typeDesc === data[i - 1].typeDesc) {
                        // typeDescが等しい場合は0を追加してプッシュします
                        自己.行と列[自己.位置] += 1
                        自己.行と列.プッシュ(0)
                        (データ[i].areaDesc === データ[i - 1].areaDesc)の場合{
                            // areaDescが等しい場合は0を追加してプッシュします
                            self.rowRoomColumn[self.posT] += 1
                            自己.rowRoomColumn.push(0)
                        } それ以外 {
                            自己.rowRoomColumn.push(1)
                            自己.posT = i
                        }
                    } それ以外 {
                        // 等しくない push 1
                        自己.行と列.プッシュ(1)
                        自己位置 = i;
                        自己.rowRoomColumn.push(1)
                        自己.posT = i
                    }
                }
            }
        },

上記のコードはデータを整理するためのものです。コメントは非常に明確です。誰でも理解できると思います。本当に理解できない場合は、印刷して見てください。

データを処理した後、上記の span メソッドが使用されます。図に示すように:

objectSpanMethod メソッドは次のとおりです。

オブジェクトスパンメソッド({ 行、列、行インデックス、列インデックス }) {
            自分 = これ
            列インデックス === 1 の場合 {
                (self.rowAndColumn[rowIndex])の場合{
                rowNum = self.rowAndColumn[rowIndex]とします。
                戻る {
                    行範囲: 行番号、
                    列範囲: rowNum > 0 ? 1 : 0
                    }                                                   
                }
                戻る {
                    行範囲: 0,
                    列幅: 0
                }  
            }
            列インデックス === 2 の場合
                (self.rowRoomColumn[rowIndex])の場合{
                roomNum = self.rowRoomColumn[rowIndex]とします。
                戻る {
                    行スパン: 部屋番号、
                    列範囲: 部屋番号 > 0 ? 1 : 0
                    }                                                   
                }
                戻る {
                    行範囲: 0,
                    列幅: 0
                }  
            }
        },

完了です。効果画像を見てみましょう

この方法を使用する場合、バックエンドはデータを送信する前に並べ替える必要があることに注意してください。そうしないと、ページで目的の効果が得られない可能性があります。 2列目から結合を開始したため、objectSpanMethod メソッドの columnIndex は 1 から始まります。実際の状況に応じて変更できます。インターフェイスから取得したデータを getListDataForRowAndColumn メソッドに格納し、rowAndColumn と rowRoomColumn を定義することを忘れないでください。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • vue elementUI テーブルカスタムヘッダーと行のマージサンプルコード
  • Vueはデータテーブル行スパンの列を結合する効果を実現します
  • Vueは配列内の同じデータをマージすることを実現する
  • Vue.js はテーブル結合のサンプルコードを実装します
  • Antd vue テーブルは行間でセルを結合し、コンテンツ インスタンスをカスタマイズします。
  • Vueでは、element-uiテーブルは上行と下行の同じデータセルを結合します
  • Vueセルの複数列を結合する実装
  • Vue はセルを動的に結合し、小計を追加する関数の例
  • require.js は vue コンポーネントをロードします。r.js はマージされ圧縮された例です。
  • Vue Elenentはテーブル内の同じデータ列の結合を実現します

<<:  Mapper SQL ステートメント フィールドとエンティティ クラス属性名の関係は何ですか?

>>:  Docker を使用した ELK7.3.0 ログ収集サービスの導入に関するベスト プラクティス

推薦する

react-color を使用してフロントエンドのカラーピッカーを実装する方法

背景次の図に示すように、 react-color を使用してフロントエンド インターフェースのカラー...

MySQL query_cache_type パラメータと使用方法の詳細

MySQL クエリ キャッシュを設定する目的は次のとおりです。クエリ結果をキャッシュしておくと、次回...

MYSQLクエリデータの結果に自動的に番号を付ける方法

序文実際、クエリ中に結果に番号が付けられるこのような状況に遭遇したことは一度もありません。同僚が転職...

MySQL パラメータ関連の概念とクエリ変更方法

序文:以前の記事では、特定のパラメータの機能についてよく紹介してきました。しかし、MySQL パラメ...

ccs3に基づくタイムライン実装方法

Web プロジェクトでは、タイムライン コントロールをよく使用します。この記事では、項目ごとに展開で...

Flask と Vue のフロントエンドとバックエンドを分離したプロジェクト展開のサンプル コード

以前、プロジェクトを開発しました。バックエンドのインターフェースを書くために Flask フレームワ...

Linuxシステムにおける仮想デバイスファイルのさまざまな実用的な使用法の詳細な説明

みなさんこんにちは。私は梁旭です。ご存知のとおり、Linux ではデバイス ファイルも含めすべてがフ...

UI を通じて Docker を管理する方法

Docker はますます多くのシナリオで使用されています。コマンドラインツールに慣れていない人にとっ...

MySQL 5.6.36 Windows x64 バージョンのインストールチュートリアルの詳細

1. 対象環境Windows 7 64ビット2. 材料(1)VC++2010リリースパッケージ(64...

Linux に nodejs 環境とパス構成をインストールするための詳細な手順

Linux に Node.js をインストールする方法は 2 つあります。1 つは簡単で、解凍して使...

MySQL データベースのホットスタンバイにおける問題点の分析

以前、MySQL データベースのデュアルマシン ホット スタンバイの設定方法を紹介しました。ご興味の...

Nuxt.jsプロジェクトのDockerデプロイメントの実装

Docker 公式ドキュメント: https://docs.docker.com/ Docker は...

MySQL における主キーが 0 であることと主キーの自己選択制約の関係についての詳しい説明 (詳細)

序文この記事は主にMySQLの主キー0と主キー自己排除制約の関係を紹介し、皆さんの参考と学習のために...

SpringBoot のパッケージ化と Docker へのアップロード、およびマルチインスタンス デプロイメントの実装に関する簡単な分析 (IDEA バージョン)

最近友人からDockerを触ったことがあるかと聞かれました。あまり自信がなかったので答えられませんで...

MySQL データ型の完全分析

データ型: 列に格納できるデータとそのデータが実際にどのように格納されるかを定義する基本ルール。デー...