報表開發的那些日子:關於EasyUI DataGrid動態列數據綁定

来源:https://www.cnblogs.com/zhuanghamiao/archive/2022/08/02/datagrid-with-dynamic-columns.html
-Advertisement-
Play Games

最近,在對公司的一個老項目進行優化調整。有個使用的三方插件報表頁面,一旦查詢時間過長就會自動異常並使瀏覽器崩潰,由於這個插件只有個前人遺留的dll文件,實在看不懂裡面的代碼無從下手,既然項目前端大部分是基於EasyUI做的,想著就直接用EasyUI的DataGrid做數據報表明細展示。 由於之前很少 ...


最近,在對公司的一個老項目進行優化調整。有個使用的三方插件報表頁面,一旦查詢時間過長就會自動異常並使瀏覽器崩潰,由於這個插件只有個前人遺留的dll文件,實在看不懂裡面的代碼無從下手,既然項目前端大部分是基於EasyUI做的,想著就直接用EasyUI的DataGrid做數據報表明細展示。
由於之前很少做過B/S相關的項目,對於前端瞭解的不是很多,好在EasyUI框架文檔資料比較多,功能也比較齊全,上手還是比較快的。
下麵開始我的第一個關於報表開發時遇到的第一個問題:EasyUI DataGrid動態列數據綁定
EasyUI DataGrid動態列數據綁定實現方式並不是很發雜,請求到遠程數據後,通過其中一條列表數據獲取到列欄位,然後在通過datagrid對數據進行綁定

$.getJSON(url, queryParams, function (result) {
    // 清空報表節點數據
    $("#tbGrid").empty();

    // 拼裝列頭
    if (result && result.total > 0) {
        var columns = new Array();
        $.each(result.rows[0], function (i, field) {
            var column = {};
            column["title"] = i;
            column["field"] = i;
            columns.push(column);
        });

        $('#tbGrid').datagrid({
            height: 780,
            singleSelect: true,
            rownumbers: true,
            pagination: true,
            columns: [
                columns  // 列頭綁定
            ],
            data: result.rows  // 表格內容數據綁定
        });

        //分頁處理
        var pager = $('#tbGrid').datagrid('getPager');
        pager.pagination({
            showRefresh: false,
            total: result.total,
            pageList: [50, 100, 200, 500],
            pageSize: queryParams.rows,
            pageNumber: queryParams.page,
            buttons: [{
                text: '導出',
                iconCls: 'icon-redo',
                handler: function () {
                    exportToExcel(queryParams);
                }
            }],
            onSelectPage: function (pageNumber, pageSize) {
                $(this).pagination('loading');
                btnRefresh_onclick(pageNumber, pageSize);
                $(this).pagination('loaded');
            }
        });

後臺返回的數據對象是按datagrid要求的格式數據返回的

 public class EasyUIPageObject
 {
     public object rows { get; set; }
     public int total { get; set; }
     public object footer { get; set; } // 可選
 }

相關參考:
https://www.jeasyui.com/forum/index.php?topic=2197.0
http://jeasyui.com/documentation/index.php#


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • lamp 1. lamp簡介 有了前面學習的知識的鋪墊,今天可以來學習下第一個常用的web架構了。 所謂lamp,其實就是由Linux+Apache+Mysql/MariaDB+Php/Perl/Python的一組動態網站或者伺服器的開源軟體,除Linux外其它各部件本身都是各自獨立的程式,但是因為 ...
  • 上篇文章介紹瞭如何創建合適的MySQL索引,今天再一塊學一下如何更規範、更合理的使用MySQL? 合理規範的使用MySQL,可以大大減少開發工作量和線上問題,並提升SQL查詢性能。 我精心總結了這16條MySQL規約,分享給大家,歡迎評論指正。 ...
  • 大數據發展到今天,扮演了越來越重要的作用。數據可以為各種組織和企業提供關鍵決策的支持,也可以通過數據分析幫助發現更多的有價值的東西,如商機、風險等等。 在數據治理工作開展的時候,往往會有一個專門負責數據治理工作的負責人,他和大數據的負責人共同保證數據的可靠性,合法合規性。因為只有這樣的數據才是有價值 ...
  • “如果說中小企業是一片片沿溪而耕的農田,那麼我們的願景就是建一座大壩來管理好上游的水資源,來灌溉下游企業。” 騰訊雲資料庫高級工程師楊珏吉說這是他投身資料庫領域的初衷。初創企業、中小企業在資料庫層面的最大需求就是低成本。助力企業降本增效是騰訊雲資料庫一直在努力的方向,尤其在疫情衝擊下的經濟社會中,更 ...
  • 一、Mysql的系統架構圖 二、Mysql存儲引擎 Mysql中的數據是通過一定的方式存儲在文件或者記憶體中的,任何方式都有不同的存儲、查找和更新機制,這意味著選擇不同的方式對於數據的存取有效率的差距。 這種不同的存儲方式在 MySQL中被稱作存儲引擎。 存儲引擎是Mysql資料庫系統的底層組件,數據 ...
  • 如今短視頻已成為人們娛樂社交的主要形式,很多用戶也開始由觀眾逐漸轉變為短視頻製作傳播者,然而複雜的視頻剪輯工具卻令他們望而止步。如何才能降低短視頻製作剪輯門檻,讓更多無經驗者也能製作出優質的短視頻內容,並樂於分享生活趣事呢? 華為HMS Core視頻編輯服務6.6.0版本近期上線AI精彩片段能力,能 ...
  • Date日期 日期對象的定義(使用new關鍵詞) 1.獲取當前的時間(本地的時間) var date = new Date() //不傳參就是獲取當前時間 2.獲取指定的時間 var date = new Date(123456) //一個參數毫秒值 將這個毫秒值去加上對應的1970.1.1 0:0 ...
  • 今天在做css定位的時候遇到一個問題,我想用fixed定位下來,但是發現這個時候定義的百分百寬度不隨著父元素走了而是整個屏幕的百分百,這個就很尷尬了,也不能固定寬度吧,畢竟還要寬度自適應。 這個時候發現了一個position的屬性 sticky 它是relative和fixed的結合體可以理解為,當 ...
一周排行
    -Advertisement-
    Play Games
  • 經常看到有群友調侃“為什麼搞Java的總在學習JVM調優?那是因為Java爛!我們.NET就不需要搞這些!”真的是這樣嗎?今天我就用一個案例來分析一下。 昨天,一位學生問了我一個問題:他建了一個預設的ASP.NET Core Web API的項目,也就是那個WeatherForecast的預設項目模 ...
  • 很多軟體工程師都認為MD5是一種加密演算法,然而這種觀點是不對的。作為一個 1992 年第一次被公開的演算法,到今天為止已經被髮現了一些致命的漏洞。本文討論MD5在密碼保存方面的一些問題。 ...
  • Maven可以使我們在構建項目時需要用到很多第三方類jar包,如下一些常用jar包 而maven的出現可以讓我們避免手動導入jar包出現的某些問題,它可以自動下載那須所需要的jar包 我們只需要在創建的maven項目自動生成的pom.xml中輸入如下代碼 <dependencies> <!--ser ...
  • 來源:https://developer.aliyun.com/article/694020 非同步調用幾乎是處理高併發Web應用性能問題的萬金油,那麼什麼是“非同步調用”? “非同步調用”對應的是“同步調用”,同步調用指程式按照定義順序依次執行,每一行程式都必須等待上一行程式執行完成之後才能執行;非同步調 ...
  • 1.面向對象 面向對象編程是在面向過程編程的基礎上發展來的,它比面向過程編程具有更強的靈活性和擴展性,所以可以先瞭解下什麼是面向過程編程: 面向過程編程的核心是過程,就是分析出實現需求所需要的步驟,通過函數一步一步實現這些步驟,接著依次調用即可,再簡單理解就是程式 從上到下一步步執行,從頭到尾的解決 ...
  • 10瓶毒藥其中只有一瓶有毒至少需要幾隻老鼠可以找到有毒的那瓶 身似浮雲,心如飛絮,氣若游絲。 用二分查找和二進位位運算的思想都可以把死亡的老鼠降到最低。 其中,二進位位運算就是每一隻老鼠代表一個二進位0或1,0就代表老鼠存活,1代表老鼠死亡;根據數學運算 23 = 8、24 = 16,那麼至少需要四 ...
  • 一、Kafka存在哪些方面的優勢 1. 多生產者 可以無縫地支持多個生產者,不管客戶端在使用單個主題還是多個主題。 2. 多消費者 支持多個消費者從一個單獨的消息流上讀取數據,而且消費者之間互不影響。 3. 基於磁碟的數據存儲 支持消費者非實時地讀取消息,由於消息被提交到磁碟,根據設置的規則進行保存 ...
  • 大家好,我是陶朱公Boy。 前言 上一篇文章《關於狀態機的技術選型,最後一個真心好》我跟大家聊了一下關於”狀態機“的話題。從眾多技術選型中我也推薦了一款阿裡開源的狀態機—“cola-statemachine”。 於是就有小伙伴私信我,自己項目也考慮引入這款狀態機,但網上資料實在太少,能不能系統的介紹 ...
  • 使用腳本自動跑實驗(Ubuntu),將實驗結果記錄在文件中,併在實驗結束之後將結果通過郵件發送到郵箱,最後在windows端自動解析成excel表格。 ...
  • 話說在前面,我不是小黑子~ 我是超級大黑子😏 表弟大周末的跑來我家,沒事幹天天騷擾我,搞得我都不能跟小姐姐好好聊天了,於是為了打發表弟,我決定用Python做一個小游戲來消耗一下他的精力,我思來想去,決定把他變成小黑子,於是做了一個坤坤打籃球的游戲,沒想到他還挺愛玩的~ 終於解放了,於是我把游戲寫 ...