Manejo de columnas en DataTable
Hola Grupo !!
Tengo un datatable, con 3 columnas (A,B,C), una forma con 3 botones.... lo que pretendo es mostrar en una grilla las columnas en ordenes distintos a como haya presionado el botón. Ejemplo:
Si presiono btn1 : se mostraria | B | C | A |
Si presiono btn2 : se mostraria | C | B | A |
Si presiono btn3 : se mostraria | A | B | C |
A modo de prueba solo cree la sintaxis para el botón1, pero veo que cuando termina la ejecución del evento click, me muestra ABC, como si no hubiese tenido en cuenta el orden estipulado. El código que uso es el siguiente:
DataTable dtOrder1;
public string thisConnectionString =
ConfigurationManager.ConnectionStrings["Employees_ConnectionString"].ConnectionString;
protected void Page_Load(object sender, EventArgs e)
{
dtOrder1 = new DataTable();
SqlConnection sqlConex = new SqlConnection(thisConnectionString);
SqlDataAdapter daTables = new SqlDataAdapter("Select * from Employee", sqlConex);
daTabla.Fill(dtOrder1);
grd01.DataSource = dtOrder1;
grd01.DataBind();
}protected void btn1_Click(object sender, EventArgs e)
{
dtOrder1.Columns[0].SetOrdinal(2);
dtOrder1.Columns[1].SetOrdinal(0);
dtOrder1.Columns[2].SetOrdinal(1);
grd01.DataSource = dtOrder1;
grd01.DataBind();
}
Como podría ajustarlo ?.Gracias
DiegoG.
Todas las respuestas
- Puedes utilizar un DataView y luego estableces la propiedad Sort.
DataView dvOrder = new DataView(dtOrder);
dvOrder.Sort = "Nombre Campo [DESC]" Hola, gracias por responder, lástimosamente, su respuesta no aplica al caso que menciono, ya que lo que cuentas es para ordenar las filas, mi caso es ordenar las columnas.
Gracias
Prueba con el método SectOrdinal de la propiedad Columns del datatable.
Por ejemplo: He cambiado el orden de presentación de la columna 5 a la columna 1. Ahora la información que se ubicaba en la columna 5 será presentada en la columna1. las siguientes columnas solo corren de orden.
Te dejo el fragmento de mi código:
Dim
dtGrafico As Data.DataTable = New Data.DataTable...
dtGrafico = BA.Ticker.OHLC(valores(i), Me.parametros.FechaInicial, parametros.FechaFinal)
...
dtGrafico.Columns(5).SetOrdinal(1)
Lo que consigo, es que antes de aplicarle el SetOrdinal, las columnas estaban en este orden:
Fecha, PrecioApertura, PrecioAlto, PrecioBajo, PrecioCierre y UltimoPrecio
y despues de aplicar el SetOrdinal, las columnas se ordenarian así:
Fecha, UltimoPrecio, PrecioApertura, PrecioAlto, PrecioBajo y PrecioCierre.
Recuerda que las columnas se cuentas a partir de 0.
Saludos..
Jim Saenz
