C# – Ordenar las columnas de un ultratree
Mayo 26, 2008
A diferencia del Ultragrid, el Ultratree no tiene una propiedad Header.VisiblePosition en sus columnas. Por ello, para cambiar el orden en que se despliegan las columnas tenemos que hacerlo a traves de su propiedad LayoutInfo de la siguiente forma:
primero nos enlazamos al evento ColumnSetGenerated
ultraTree1.ColumnSetGenerated+=new Infragistics.Win.UltraWinTree.ColumnSetGeneratedEventHandler(ultraTree1_ColumnSetGenerated);
en el evento le indicamos el orden de las columnas por medio de su propiedad OriginX
void ultraTree1_ColumnSetGenerated(object sender, Infragistics.Win.UltraWinTree.ColumnSetGeneratedEventArgs e)
{
e.ColumnSet.Columns["Descripcion"].LayoutInfo.OriginX = 0;
e.ColumnSet.Columns["Subtotal"].LayoutInfo.OriginX = 2;
e.ColumnSet.Columns["Año"].LayoutInfo.OriginX = 4;
}
Notese que indicamos el indice desde 0 y vamos aumentando de 2 en 2, esto se debe a que por default (y no se porque, no he encontrado sentido en ello) la propiedad SpanX tiene un valor de 2. Es decir, nuestras columnas por default se expandiran 2 celdas. Una solucion seria hacer lo siguiente, que seria equivalente al codigo anterior
void ultraTree1_ColumnSetGenerated(object sender, Infragistics.Win.UltraWinTree.ColumnSetGeneratedEventArgs e)
{
e.ColumnSet.Columns["Descripcion"].LayoutInfo.OriginX = 0;
e.ColumnSet.Columns["Subtotal"].LayoutInfo.OriginX = 1;
e.ColumnSet.Columns["Año"].LayoutInfo.OriginX = 2;
e.ColumnSet.Columns["Descripcion"].LayoutInfo.SpanX = 1;
e.ColumnSet.Columns["Subtotal"].LayoutInfo.SpanX = 1;
e.ColumnSet.Columns["Año"].LayoutInfo.SpanX = 1;
}
con ello las columnas deberian desplegarse en el orden que le hemos indicado.
Referencias: http://news.infragistics.com/forums/t/1007.aspx