2017-04-03 24 views
1

我有一個c#項目,並且在這個項目中我有一個對話框,它帶有一個ultragrid。網格有3組,每組有4列以上。 Columns of the UltragridUltraGrid VisiblePosition在列移動時不會改變

我可以移動列並更改​​列的順序。一切正常。最後,我想保存列的定義,如果列是隱藏的和列的位置。

我迭代列的列表並保存column.Hidden屬性和column.Header.VisiblePosition屬性。問題是visiblePosition值與網格中的位置不匹配,您在UI中看到該位置。

我將一些列向左右移動,但visiblePosition與開頭相同。用戶界面顯示每列的正確順序和列位置已更改,但屬性的值未更改。

也許問題存在,因爲我使用columnGroups。

謝謝

回答

3

UltraWinGrid有兩種方法來解決這類問題。
它們是來自DisplayLayout類的SaveAsXmlLoadFromXml

您可以使用它們來保存和恢復網格佈局。
例如,在窗體的Dispose事件中,你可以添加一個調用

public void SaveLayout(UltraGrid grd, string layoutFile) 
{ 
    if (grd.DataSource != null) 
     grd.DisplayLayout.SaveAsXml(layoutFile, PropertyCategories.All); 
} 

而在InitializeLayout事件網格中,你可以與

public void LoadLayout(UltraGrid grd, string layoutFile) 
{ 
    if (File.Exists(layoutFile)) 
     grd.DisplayLayout.LoadFromXml(layoutFile, PropertyCategories.All); 
} 

根據您的具體恢復佈局需要您可以微調PropertyCategories枚舉以僅選擇要保存/恢復的屬性組。