我想遠程(在數據庫上)保存Flex3 DataGrid的狀態(可見列,列寬和順序)。保存dataGrid的狀態:可見列,列寬和順序
對於寬度和可見性,我可以通過訪問每個列屬性來簡單地保存它們..醜陋但可能.. 但是對於訂單?我必須動態創建dataGrid嗎?
任何想法表示讚賞 感謝
我想遠程(在數據庫上)保存Flex3 DataGrid的狀態(可見列,列寬和順序)。保存dataGrid的狀態:可見列,列寬和順序
對於寬度和可見性,我可以通過訪問每個列屬性來簡單地保存它們..醜陋但可能.. 但是對於訂單?我必須動態創建dataGrid嗎?
任何想法表示讚賞 感謝
爲什麼你就不能保存順序你通過每列循環?
for(var i:int = 0; i < dataGrid.columns.size; i++)
{
var column:DataGridColumn = dataGrid.columns[i];
arr.push({column.visible, column.width, i});
}
mmm ..不清楚我如何在那裏保存命令...'我'變量剛剛增加1,我怎麼知道如果用戶切換了兩列? – luca 2010-01-11 18:02:23
在我來說,我已經通過標題名稱保存順序(我做你的DataGrid中始終具有相同的列頭名的假設)。
for (var n:Number = 0; n< datagrid.columns.length; n++)
{
var thiscol:DataGridColumn = DataGridColumn(datagrid.columns[n]);
colArray.addItem(thiscol.headerText);
}
然後我就可以通過檢索列標題的有序列表,並根據需要交換的數據網格列的位置恢復列的順序。
for (var n:Number = 0; n < colArray.length; n++)
{
moveColumnTo(String(colArray.getItemAt(n)), n);
}
我已經定義了一個函數moveColumnTo()來執行切換。
private function moveColumnTo(columnName:String, columnIndex:Number):void
{
// Find current column position
var i:Number = -1;
for (var n:Number = 0; n < datagrid.columns.length; n++)
{
if (DataGridColumn(datagrid.columns[n]).headerText == columnName)
{
i = n;
break;
}
}
if (i == -1 || i == columnIndex) return; // Don't shift column
this.mx_internal::shiftColumns(i, columnIndex); // Shift column to required position
}
您是否在討論多個數據網格的排列順序?或列的排序順序? – Shua 2010-01-11 15:38:54
列的順序,這意味着標題(不是每列的排序) – luca 2010-01-11 17:59:55