Se você deseja aprender ou ver como funciona a conversão de DataView em DataTable, então continue lendo este artigo. Foi feito um método do tipo public e static que faz o trabalho de transformar um tipo de dado DataView em DataTable comumente usado.

Usado: Visual Studio 2010, Linguagem C#.NET, DataView, DataTable.

O método criado é simples e fácil de entender. O melhor, é gerar uma classe pública, criar método público e estático. O primeiro passo é gerar um clone do DataView, fazer um “for” para pegar os nomes das colunas e depois gerar o DataTable. No final, o método retorna um DataTable. (Code 1.1)

 

        /// <summary>

        /// Converte um DataView para um DataTable

        /// </summary>

        /// <param name="oDataView">DataView a converter</param>

        public static DataTable ConverteDataViewToDataTable(DataView oDataView)

        {

            if (oDataView == null)

                return null;

 

            DataTable obNewDt = oDataView.Table.Clone();

            int idx = 0;

            string[] strColNames = new string[obNewDt.Columns.Count];

            foreach (DataColumn col in obNewDt.Columns)

            {

                strColNames[idx++] = col.ColumnName;

            }

 

            IEnumerator viewEnumerator = oDataView.GetEnumerator();

            while (viewEnumerator.MoveNext())

            {

                DataRowView drv = (DataRowView)viewEnumerator.Current;

                DataRow dr = obNewDt.NewRow();

                try

                {

                    foreach (string strName in strColNames)

                    {

                        dr[strName] = drv[strName];

                    }

                }

                catch

                {

                }

                obNewDt.Rows.Add(dr);

            }

 

            return obNewDt;

        }

 

 

Code 1.1

Foi utilizado GetEnumerator() para fazer o loop dos valores dentro do DataView. A minha dica é gerar uma estrutura separada como dll ou framework para colocar este método. Assim, a dll pode ser referenciada em vários projetos e utilizada sem qualquer problema.

Existem outros métodos publicados como artigos no site www.ecode10.com disponível gratuitamente, dessa forma, você pode ir juntando os dados no seu framework ou dll própria. Segue alguns links deles abaixo:

Filtrar o DataTable Dinamicamente:

Ordenar DataTable:

Adicionar uma coluna em um DataTable