中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

動態多字段導出解決方案

發布時間:2020-07-02 05:33:34 來源:網絡 閱讀:339 作者:范忠華 欄目:編程語言

一、問題來源

1.1問題現象

動態多字段導出內存溢出

 

1.2問題分析

從問題的現象中找不到問題出現根源,需要通過捕獲異常來分析問題具體出在那


通過不同參數導出測試,發現30個以內的列名導出沒有問題,超過其上限在datatable給控鍵(原來用aspose控件)賦值中就拋出了異常。當初以為是控件問題,就嘗試用NOPI控件,但是問題依然存在。由此可見內存溢出很大原因是來自要到導出的列名太多(73個字段),讀取datatable的值時導致了內存溢出,需要用另一種方式來替換通過讀取datatable賦值的方式來實現給導出控件賦值。

 

 

二、解決方法

找到了導致問題出現的最大可能,接下來就是如何去解決。如果每次都是全部導出,這個問題好解決,直接通過foreach逐行讀取對象集合給控件賦值就ok了,問題是需要按照客戶選定的列名動態導出,找出需要導出的字段與其對象屬性的對應關系是解決問題的關鍵所在。當時嘗試用了通過xml配置文件找到它們對應關系,但并未能實現,原因是動態控制難實現。有時候思路錯了,思考的方向錯了,問題會越陷越深,出現無頭緒的狀態。在這個時候我們應該跳出來,重新去審視這個問題,用另一種方法去解決。通過重新審視問題,發現要建立關系,表頭必須是要存放在二維的表中,只要建立一張基礎關系數據表,用來對象給導出控件賦值遍歷識別是否是用戶選中的列名。這基礎數據表要求數據全即涵蓋全部的導出字段,且每個字段需有一個對應的固定的標記空間用來標記用戶是否選中這個字段。動態表頭存放在datatable中,沒有處理的表頭數據與基礎關系表的表頭一致,再通過轉過來列名進行篩選,保證數據的一致性。在此之前需要給這73個列名固定的順序(按照客戶需求的排序)。從而得出解決方案,如下圖


附件:http://down.51cto.com/data/2365315
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东宁县| 大英县| 灯塔市| 孟津县| 德兴市| 河曲县| 麦盖提县| 安塞县| 苍南县| 娱乐| 城固县| 含山县| 石景山区| 平果县| 阿鲁科尔沁旗| 四子王旗| 嘉禾县| 湟源县| 中西区| 青阳县| 莆田市| 栾川县| 霍邱县| 镇赉县| 遵义县| 绥宁县| 衢州市| 德化县| 溧水县| 特克斯县| 宕昌县| 勐海县| 宁南县| 江陵县| 安达市| 荃湾区| 咸丰县| 邯郸市| 鹤壁市| 山丹县| 松阳县|