Foros del Web » Programación para mayores de 30 ;) » .NET »

Dividir Datatable en base a columnas

Estas en el tema de Dividir Datatable en base a columnas en el foro de .NET en Foros del Web. Buenas tardes. Tengo una datatable con mas de 50 columnas y me preguntaba como poder divirla en tablas mas pequeñas de digamos 10 columnas cada ...
  #1 (permalink)  
Antiguo 12/07/2010, 13:43
 
Fecha de Ingreso: mayo-2010
Mensajes: 9
Antigüedad: 14 años, 5 meses
Puntos: 0
Dividir Datatable en base a columnas

Buenas tardes.

Tengo una datatable con mas de 50 columnas y me preguntaba como poder divirla en tablas mas pequeñas de digamos 10 columnas cada una con sus respectivas filas, de momento he podido dividir la tabla en columnas pero no he podido pegar sus filas con los datos que corresponden a cada columna, espero me puedan dar algunas ideas de como lograrlo
  #2 (permalink)  
Antiguo 12/07/2010, 13:50
Avatar de Porlachucha  
Fecha de Ingreso: noviembre-2008
Ubicación: Santiago
Mensajes: 172
Antigüedad: 15 años, 11 meses
Puntos: 5
Respuesta: Dividir Datatable en base a columnas

Deberias utilizar una vista del dataTable
Mira esta funcoin, te puede dar una idea de como implementar una vista distinta pasandole como parametros un arreglo de columnas

Código:
        public static DataTable dttSelectDistinct(DataTable SourceTable, params string[] Columns)
        {
            DataTable Result = new DataTable();
            if (SourceTable != null)
            {
                DataView DView = SourceTable.DefaultView;
                try
                {
                    DView.RowFilter = null;
                    Result = DView.ToTable(true, Columns);
                }
                catch (Exception ex)
                {
                    return null;
                }

            }
            return Result;
        }
plch
__________________
Nada mas patetico que "detestar" a Intel o Microsoft o Windows o Apple ... apuesto que eres el tipico teton espinilluo y pajero que usa Linux para sentirse capo ...
  #3 (permalink)  
Antiguo 12/07/2010, 15:41
 
Fecha de Ingreso: mayo-2010
Mensajes: 9
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Dividir Datatable en base a columnas

gracias por contestar tan pronto, en este momento lo reviso y te comento a ver como me queda
  #4 (permalink)  
Antiguo 12/07/2010, 18:08
 
Fecha de Ingreso: mayo-2010
Mensajes: 9
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Dividir Datatable en base a columnas

no, crei que seria sencillo pero no puedo hacerlo me podrias proporcionar algun enlace donde expliquen como usar el dataview?
  #5 (permalink)  
Antiguo 13/07/2010, 07:58
Avatar de Porlachucha  
Fecha de Ingreso: noviembre-2008
Ubicación: Santiago
Mensajes: 172
Antigüedad: 15 años, 11 meses
Puntos: 5
Respuesta: Dividir Datatable en base a columnas

mira si no es tan complicado..

Result = DView.ToTable(true, Columns);

el primer parametro, indica si se hace un distinct sobre la data, en tu caso no lo necesitas asi que lo pones en false. el segundo parametro, es un arreglo de las columnas que necesitas que esten en la vista. en este parametro, debes ir agregando en forma dinamica, las columnas que necesitas que aparezcan en tu vista.
esto lo logras recorriendo con un ciclo foreach las columnas de tu datatable, y pasandole segmentos de este conjunto en forma parcial al metodo del dataview

revisa este link, ahi salen explicados los parametros. http://msdn.microsoft.com/en-us/library/wec2b2e6.aspx
Salu2
plch
__________________
Nada mas patetico que "detestar" a Intel o Microsoft o Windows o Apple ... apuesto que eres el tipico teton espinilluo y pajero que usa Linux para sentirse capo ...
  #6 (permalink)  
Antiguo 13/07/2010, 10:00
 
Fecha de Ingreso: mayo-2010
Mensajes: 9
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Dividir Datatable en base a columnas

gracias de nuevo, ahora mismo comienzo de nuevo a revisarlo
  #7 (permalink)  
Antiguo 13/07/2010, 16:00
 
Fecha de Ingreso: mayo-2010
Mensajes: 9
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Dividir Datatable en base a columnas

Gracias, ya lo resolví de la siguiente manera, ya que se me dificulto entender el dataview, aun así prometo revisarlo con calma para no venir con las mismas dudas.

aquí el código con que lo resolví


Código:
private static DataSet ds(DataTable dt)
        {
            DataSet Dat = new DataSet();
               int escribir=0;
               int restantes =10;
               int cols= dt.Columns.Count/10;
               int NumColumns = dt.Columns.Count;
              for (int j = 0; j < cols + 1; j++)
              {
                  DataTable dtFinal = new DataTable();
                  List<string> NomColumns = new List<string>();
                  for (int i = escribir; i < restantes; i++)
                  {
                      if(i==dt.Columns.Count)
                      break;
                      DataColumn Dc = new DataColumn();
                      Dc.ColumnName = dt.Columns[i].ColumnName;
                      NomColumns.Add(dt.Columns[i].ColumnName);
                      dtFinal.Columns.Add(Dc);
                  }

                  foreach (DataRow Dr in dt.Rows)
                  {
                      int h = 0;
                      DataRow DrNew = dtFinal.NewRow();
                      for (int i = escribir; i < restantes; i++)
                      {
                          if (i == dt.Columns.Count)
                              break;
                          DrNew[NomColumns[h]] = Dr[NomColumns[h]].ToString();
                          h++;
                      }
                      dtFinal.Rows.Add(DrNew);
                  }

                  escribir = restantes;
                  restantes = restantes + 10;
                  Dat.Tables.Add(dtFinal);
              } 
                   return Dat;
           }//ds

Etiquetas: columnas, datatable, dividir
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:58.