none
Eliminar Columnas a un Datatable RRS feed

  • Pregunta

  • Hola buen día 

    Tengo dudas con la eliminación de columnas de un DataTable,, Tengo en  total  46 columnas en un datatable y lo que quiero es eliminar todas menos las columnas con el index: 1,2,3,4,6,8,9,10,11,13. Pero no me funciona. este codigo manejo, pero me sale error y dice: "No se puede encontrar la columna 28."

         dt = LlenarDt()

         int   numeroColumnas = dt.Columns.Count; 

          for (int i = 0; i < numeroColumnas; i++)
                {
                    if (i != 1 && i != 2 && i != 3 && i != 4 && i != 6 && i != 8 && i != 9 && i != 10 && i != 11 && i != 13)
                    {
                        dt.Columns.RemoveAt(i);
                    }
                }   
                return dt;

    Porfavor si me pueden ayudar, se los agradeceré

    saludos... 

    miércoles, 23 de julio de 2014 21:30

Respuestas

  • using System;
    using System.Data;
    using System.Linq;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                DataTable dt = new DataTable();
    
                for (int k = 0; (k < 46); k++)
                {
                    dt.Columns.Add("columna" + k);
                }
    
                int[] col = { 1, 2, 3, 4, 6, 8, 9, 10, 11, 13 };
                DataColumn[] cols = dt.Columns.Cast<DataColumn>().Where(dc => !col.Contains(dc.Ordinal)).ToArray();
    
                for (int k = 0; k < cols.Length; k++)
                {
                    dt.Columns.Remove(cols[k]);
                }
    
                dataGridView1.DataSource = dt;
            }
        }
    }
    

    miércoles, 23 de julio de 2014 22:12

Todas las respuestas

  • hola

    el tema es que cuando vas eliminando los index de las columnas cambian, o sea quitas una columnas y las restantes se mueven

    si eliminas la columana 10, entonces la que estaba como 11 pasa a ser la 10 en la coleccion de columnas

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina


    miércoles, 23 de julio de 2014 22:05
  • using System;
    using System.Data;
    using System.Linq;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                DataTable dt = new DataTable();
    
                for (int k = 0; (k < 46); k++)
                {
                    dt.Columns.Add("columna" + k);
                }
    
                int[] col = { 1, 2, 3, 4, 6, 8, 9, 10, 11, 13 };
                DataColumn[] cols = dt.Columns.Cast<DataColumn>().Where(dc => !col.Contains(dc.Ordinal)).ToArray();
    
                for (int k = 0; k < cols.Length; k++)
                {
                    dt.Columns.Remove(cols[k]);
                }
    
                dataGridView1.DataSource = dt;
            }
        }
    }
    

    miércoles, 23 de julio de 2014 22:12
  • Ya entendí, Muchas gracias amigo. resolviste mi problema. saludos...
    miércoles, 23 de julio de 2014 23:29