[英]Sorting columns in a flex datagrid
datagrid從后端數據庫獲取數據,該數據庫具有類似
RecordID Division Department Date_Report_Submitted
1. Finance Accounting 11/1/2010
2. Engineering Design 4/2/2011
3. Engineering Implementation 4/2/2011
4. Support Chat_Support 2/4/2010
單擊Datagrid列(部門)中的標題會導致基於recordID的排序,例如
Division Department Date_Report_Submitted
Finance Accounting 11/1/2010
Engineering Design 4/2/2011
Engineering Implementation 4/2/2011
Support Chat_Support 2/4/2010
而我希望按字母順序對Datagrid列(部門)進行排序,例如
Division Department Date_Report_Submitted
Finance Accounting 11/1/2010
Support Chat_Support 2/4/2010
Engineering Design 4/2/2011
Engineering Implementation 4/2/2011
因為按照字典順序,計費應該在Chat_Support之前。
<mx:DataGrid id="myRecords" dataProvider="{myRecords_dp}" width="810" height="274"
itemClick="getRecordData(event)">
<mx:columns>
<mx:DataGridColumn id="firstCol" width="180" fontFamily="Arial" fontSize="12"
wordWrap="true" />
<mx:Button label="Click to Sort" click="mysort()" />
</mx:columns>
</mx:DataGrid>
和
private function mysort():void
{
var sortField:SortField = new SortField();
sortField.compareFunction = mycompare;
sortField.descending = false;
var sort:Sort = new Sort();
sort.fields = [sortField];
myRecords.sort = sort;
myRecords.refresh();
}
private function mycompare(lhs:Object, rhs:Object):int
{
var valueA:String = lhs.text();
var valueB:String = rhs.text();
return ObjectUtil.stringCompare(valueA, valueB);
}
我收到類似的錯誤
1061:通過靜態類型為mx.controls:DataGrid的引用調用可能未定義的方法刷新。
為myRecords.refresh(); 和
通過靜態類型為mx.controls:DataGrid的引用訪問可能未定義的屬性排序。
為myRecords.sort
任何建議,將不勝感激。
對於問題:
1061:通過靜態類型為mx.controls:DataGrid的引用調用可能未定義的方法刷新。 為myRecords.refresh(); 和
通過靜態類型為mx.controls:DataGrid的引用訪問可能未定義的屬性排序。 為myRecords.sort
嘗試將dataProvider強制轉換為ArrayCollection或XMLListCollection(無論使用哪種方式):
ArrayCollection(myRecords.dataProvider).sort = sort;
ArrayCollection(myRecords.dataProvider).refresh();
您問題中的代碼有些混亂。 例如,您不能將按鈕用作DataGrid中的列。 這給出了編譯器錯誤。
盡管如此,我還是根據您的示例數據和共享的代碼整理了一個示例,以向您展示DataGrid排序不能像您聲稱的那樣工作。
在這里玩 。
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="955" minHeight="600" viewSourceURL="srcview/index.html">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
public var myRecords_dp : ArrayCollection = new ArrayCollection([
{recordID:1, division:'Finance', department:'Accounting', Date_Report_Submitted:new Date(2010,11,1)},
{recordID:2, division:'Engineering', department:'Design', Date_Report_Submitted:new Date(2010,4,2)},
{recordID:3, division:'Engineering', department:'Implementation', Date_Report_Submitted:new Date(2011,4,2)},
{recordID:4, division:'Support', department:'Chat_Support ', Date_Report_Submitted:new Date(2010,2,4)},
])
public function mysort():void{
}
public function getRecordData(event:Event):void{
}
]]>
</fx:Script>
<mx:DataGrid id="myRecords" dataProvider="{myRecords_dp}" width="810" height="274"
itemClick="getRecordData(event)">
<mx:columns>
<mx:DataGridColumn id="firstCol" width="180" fontFamily="Arial" fontSize="12"
wordWrap="true" dataField="division" />
<mx:DataGridColumn id="secondCol" width="180" fontFamily="Arial" fontSize="12"
wordWrap="true" dataField="department" />
<mx:DataGridColumn id="thirdCol" width="180" fontFamily="Arial" fontSize="12"
wordWrap="true" dataField="Date_Report_Submitted" />
<!-- <mx:Button label="Click to Sort" click="mysort()" />-->
</mx:columns>
</mx:DataGrid>
</s:Application>
在您的問題上獲得更多幫助; 您將必須共享一些實際代碼來演示一些問題; 而不是您在Internet上發現的各種雜亂無章的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.