Formular una preguntaFormular una pregunta
 

PreguntaManejo de columnas en DataTable

  • martes, 17 de julio de 2007 22:15DiegoFer Medallas del usuarioMedallas del usuarioMedallas del usuarioMedallas del usuarioMedallas del usuario
     

    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

  • martes, 17 de julio de 2007 22:56Hadi HaririMVPMedallas del usuarioMedallas del usuarioMedallas del usuarioMedallas del usuarioMedallas del usuario
     
    Puedes utilizar un DataView y luego estableces la propiedad Sort.

    DataView dvOrder = new DataView(dtOrder);
    dvOrder.Sort = "Nombre Campo [DESC]"

  • martes, 17 de julio de 2007 23:01DiegoFer Medallas del usuarioMedallas del usuarioMedallas del usuarioMedallas del usuarioMedallas del usuario
     

    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

  • miércoles, 01 de octubre de 2008 18:07Jim Saenz Medallas del usuarioMedallas del usuarioMedallas del usuarioMedallas del usuarioMedallas del usuario
     

    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

    jsaenz@quiputechnology.com