最近,用flex做了一个项目,项目里面涉及到很多表格和分页处理,以及按照某个字段全部培训功能(一般的都是当前页的排序)。具体代码如下:<?xml version="1.0" encoding="utf-8"?> <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <!--[CDATA[ import mx.collections.SortField; import mx.collections.Sort; import mx.collections.ICollectionView; import mx.collections.ArrayCollection; import mx.controls.dataGridClasses.DataGridColumn; import mx.events.DataGridEvent; import mx.controls.Alert; import mx.managers.CursorManager; [Bindable] public var gridData:ArrayCollection; [Bindable] public var page:Boolean = true; [Bindable] public var gridFieldMap:Array; [Bindable] public var pageVisible:Boolean; private var curPageNo:int = 0; [Bindable] public var perPageNum:int = 10; [Bindable] public var sortAll:Boolean = false; private var _pageNum:int = 0; private var _columns:Array = new Array(); private var __empty_data:ArrayCollection = new ArrayCollection(); public function init():void{ this.init_grid_field(); this.clear_data(); this.add_listen_event(); } public function clear_data():void{ if(this.gridData != null){ this.gridData.removeAll(); this.id_dg.dataProvider = __empty_data; //this.id_dg.dataProvider = this.gridData; } } public function load_data(data:Array):void{ if(this.gridData == null) this.gridData = new ArrayCollection(); this.gridData.source = data; this.compute_page_num(); this.init_grid_data(); } private function add_listen_event():void{ this.id_dg.addEventListener(DataGridEvent.HEADER_RELEASE, header_release_handler); } private function header_release_handler(evt:DataGridEvent):void{ if(this.sortAll == false || this.gridData.length == 0) return; var cur_column:DataGridColumn = this.id_dg.columns[evt.columnIndex]; var desc:Boolean = cur_column.sortDescending; var col_view:ICollectionView = ICollectionView(this.gridData); if(cur_column.sortable){ var col_sort:Sort = col_view.sort; var sort_field:SortField = null; if(col_sort){ var sf:Array = col_sort.fields; if(sf.length > 0){ for(var i:int ; i < sf.length; i ++){ if(sf[i].name == cur_column.dataField){ sort_field = sf[i]; desc = !sort_field.descending; break; }//if }//for }//if }//if else col_sort = new Sort(); if(!sort_field) sort_field = new SortField(cur_column.dataField); cur_column.sortDescending = desc; var desc_string:String = (desc)?"DESC":"ASC"; sort_field.name = cur_column.dataField; if(cur_column.sortCompareFunction != null) sort_field.compareFunction = cur_column.sortCompareFunction; else sort_field.compareFunction = null; sort_field.descending = desc; var data_type:String = typeof(col_view[0][cur_column.dataField]); if(data_type == "number") sort_field.numeric = true; col_sort.fields = [sort_field]; this.gridData.sort = col_sort; this.gridData.refresh(); this.set_page_no(this.curPageNo); } } internal function init_grid_field():void{ if(gridFieldMap == null || gridFieldMap.length == 0) return; if(_columns.length != 0){ while(this._columns.length != 0) this._columns.pop(); } for(var i:int = 0; i < this.gridFieldMap.length; i ++){ var item_col:DataGridColumn = new DataGridColumn(); item_col.headerText = gridFieldMap[i].headerText; item_col.dataField = gridFieldMap[i].dataField; if(gridFieldMap[i].filter != undefined && gridFieldMap[i].filter != null) item_col.labelFunction = gridFieldMap[i].filter; if(gridFieldMap[i].sortFunc != undefined && gridFieldMap[i].sortFunc != null){ item_col.sortCompareFunction = gridFieldMap[i].sortFunc; } if(gridFieldMap[i].width != undefined && gridFieldMap[i].width != null){ item_col.width = gridFieldMap[i].width; } item_col.sortable = true; _columns.push(item_col); } this.id_dg.columns = this._columns; } public function set_grid_field(field:Array):void{ this.gridFieldMap = field; } internal function init_grid_data():void{ if(this.gridData == null || this.gridData.length == 0) return; this.curPageNo = 0; this.pagebtn_display(0); this.set_cur_grid_data(); } internal function set_cur_grid_data():void{ if(this.pageVisible == false){ this.id_dg.dataProvider = this.gridData; } else{ var cur_data:Array = new Array(); var cur_num:int = this.curPageNo * this.perPageNum; for(var i:int = 0; cur_num < this.gridData.length && i < this.perPageNum; i ++,cur_num++){ cur_data.push(this.gridData.getItemAt(cur_num)); } var cur_grid_data:ArrayCollection = new ArrayCollection(); cur_grid_data.source = cur_data; this.id_dg.dataProvider = cur_grid_data; var temp:int = 0; if(this.gridData.length != 0) temp = this.curPageNo + 1; this.page_detail.text = "第" + temp + "/" + this._pageNum + "页,总共记录数:" + this.gridData.length; } } internal function set_page_no(page_no:int):void{ this.curPageNo = page_no; this.set_cur_grid_data(); } internal function compute_page_num():void{ if(gridData == null || this.gridData.length == 0) return; if(this.pageVisible == true){ var cur_data:Array = this.gridData.source; if(cur_data.length % this.perPageNum == 0) this._pageNum = cur_data.length / this.perPageNum; else this._pageNum = cur_data.length / this.perPageNum + 1; } } internal function first_page(page_no:int):void{ if(this.gridData.length == 0) return; this.pagebtn_display(0); this.set_page_no(page_no); } internal function pagebtn_display(btn_mode:int):void{ switch(btn_mode){ case 0://按了首页 this.id_first_page.enabled = false; this.id_pre_page.enabled = false; this.id_next_page.enabled = true; this.id_end_page.enabled = true; break; case 1://按了上一页 if(this.curPageNo - 1 == 0){ this.id_first_page.enabled = false; this.id_pre_page.enabled = false; } this.id_next_page.enabled = true; this.id_end_page.enabled = true; break; case 2://按了下一页 if(this.curPageNo + 1 == this._pageNum - 1){ this.id_next_page.enabled = false; this.id_end_page.enabled = false; } this.id_first_page.enabled = true; this.id_pre_page.enabled = true; break; case 3://按了末页 this.id_next_page.enabled = false; this.id_end_page.enabled = false; this.id_pre_page.enabled = true; this.id_first_page.enabled = true; break; } } internal function pre_page(page_no:int):void{ if(this.gridData.length == 0) return; this.pagebtn_display(1); this.set_page_no(page_no); } internal function next_page(page_no:int):void{ if(this.gridData.length == 0) return; this.pagebtn_display(2); this.set_page_no(page_no); } internal function end_page(page_no:int):void{ if(this.gridData.length == 0) return; this.pagebtn_display(3); this.set_page_no(page_no); } ]]--> </mx:Script> <mx:DataGrid id="id_dg" rowHeight="22" width="100%" height="100%" horizontalScrollPolicy="auto"/> <mx:HBox id="page_box" visible="{pageVisible}" includeInLayout="{pageVisible}" width="100%" horizontalAlign="left" verticalAlign="middle"> <mx:LinkButton id="id_first_page" label="首页" click="first_page(0)" visible="{pageVisible}"/> <mx:LinkButton id="id_pre_page" label="上一页" click="pre_page(curPageNo - 1)" visible="{pageVisible}"/> <mx:LinkButton id="id_next_page" label="下一页" click="next_page(curPageNo + 1)" visible="{pageVisible}"/> <mx:LinkButton id="id_end_page" label="末页" click="end_page(_pageNum - 1)" visible="{pageVisible}"/> <mx:Label text="第0/0页,总共记录数:" id="page_detail" fontSize="14"/> </mx:HBox> </mx:VBox>
DevExpress WinForms擁有180+組件和UI庫,能爲Windows Forms平臺創建具有影響力的業務解決方案。DevExpress WinForms能完美構建流暢、美觀且易於使用的應用程序,無論是Office風格的界面,還
傳統的佈局概念 基於盒子容器,依賴 display 、position 、float三個屬性,相互制約 Flex佈局概念 1.Flex佈局簡稱 “彈性佈局” 或 “流式佈局” 或 “”伸縮佈局”,各有千秋。 2.是一種當頁面需
分享8個開箱即用的API,方便日常處理集合。 1. 快速過濾空值:Stream.ofNullable 該方法是在 Java 9 中引入的,有助於過濾集合中的所有空值,從而可能使我們避免空指針異常。 在下面的示例中,有一個包含 null 的L
一、背景 在日常部門OpsReview過程中,部門內多次遇到應用容器所在的宿主機磁盤繁忙導致的接口響應緩慢,TP99增高等影響服務性能的問題,其中比較有效的解決方案是開啓日誌的異步打印,可以有效避免同步日誌打印在磁盤IO高起的情況下拖慢業
本文分享自華爲雲社區《【MySQL技術專欄】MySQL8.0直方圖介紹》,作者:GaussDB 數據庫。 背景 數據庫查詢優化器負責將SQL查詢轉換爲儘可能高效的執行計劃,但因爲數據環境不斷變化導致優化器對查詢數據瞭解的不夠充足,可能無法
每篇一句 大魔王張怡寧:女兒,這堆金牌你拿去玩吧,但我的銀牌不能給你玩。你要想玩銀牌就去找你王浩叔叔吧,他那銀牌多 前言 爲了講述好Spring MVC最爲複雜的數據綁定這塊,我前面可謂是做足了功課,對此部分知識此處給小夥伴留一個學
作者:vivo 互聯網數據庫團隊- Qiu Xinbo 本文主要通過圖示介紹了用主鍵進行分片查詢的過程,介紹了主鍵分頁查詢存在SQL性能問題,如何去創建高效的索引去優化主鍵分頁查詢的SQL性能問題 對於數據分佈不均
JSON簡介: JSON(Java Script Object Notation)是一種輕量級的數據交換格式,通常用於在不同系統之間傳輸數據。它基於 JavaScript 對象語法,但已成爲一種獨立於語言的格式。JSON 數據以鍵值對的形式
一、簡單介紹: CaffeineCache和Guava的Cache是應用廣泛的本地緩存。 在開發中,爲了達到降低依賴、提高訪問速度的目的。會使用它存儲一些維表接口的返回值和數據庫查詢結果,在有些場景下也會在分佈式緩存上再加上一層本地緩存,
作者:vivo 互聯網大前端團隊 - Ma Lian 本文主要描述了FileProvider,startAnyWhere實現,Parcel不對稱漏洞以及這三者結合產生的漏洞利用實戰,另外闡述了漏洞利用的影響和修復預防措施,這個漏洞波及了
本文分享自華爲雲社區《GaussDB SQL基本語法示例-CASE表達式》,作者:Gauss松鼠會小助手2。 一、前言 SQL是用於訪問和處理數據庫的標準計算機語言。GaussDB支持SQL標準(默認支持SQL2、SQL3和SQL4的主要
Impala目前支持Hadoop中幾種常見的文件格式 Parquet 、 ORC 、 Text 、 Avro 、 RCFile 和 SequenceFile 。下面簡要說明各種格式的使用、限制和一些注意事項。 不同的文件格式有着不同的適用場
Ai technology 前言 AppBuilder上線了低代碼製作組件功能,可以通過工作流的方式構建自定義組件,完成簡單Agent無法完成的複雜功能,使得生成的文本更加定製化,
最近在刷一些問題的時候看到有下面一個問題 上面問的是當輸入的字符串爲什麼的時候返回 True 總結 在做題目的時候,第一次還做錯了。 這是因爲解答這個題目的時間只有 3 分鐘,沒有自己看題目 後來拿着程序跑了下。 p
一 概念梳理 對稱加密和非對稱加密是兩種基本的加密方法,它們在現代密碼學中扮演着核心角色,用於保護數據的安全和隱私。 1.1 對稱加密(Symmetric Encryption) 對稱加密是指加密和解密使用同一個密鑰的過程。這意味着發送方和