• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Tiago Salgado

DataTable - overload do metodo para adicionar novas linhas

5 mensagens neste tópico

Boa tarde,

Estou aqui com uma dúvida sobre como fazer o overload de um metodo. O método que permite inserir novas linhas numa DataTable tem 2 overloads, mas eu precisava de adicionar mais um.

Para metodos criados por mim eu sei como fazer, mas neste caso nao sei.

Queria algo que me permitisse fazer

DataTable dt = new DataTable();
DataRowCollection linhas = GridView1.Rows;
dt.Rows.Add(linhas);

Ou seja, preciso de ter um overload no método que me permita usar uma DataRowCollection.

Agradeço toda a ajuda possível.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

obs1: tanto o GridView.Rows como o DataTable.Rows retorna DataRowCollection

se queres adicionar um ao outro um foreach não resolve?

EDIT: DataRowCollection é sealed logo não podes derivar dessa classe... ou seja, esquece a ideia de criar uma classe derivada dessa e definir-lhe um novo método Add()

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A única forma que estou a ver, só criando uma classe que herde um DataTable. Provávelmente não é o que queres mas ...

Fica aqui um exemplo (vb não me apetece converter para c#)

Public Class MyNewTable
    Inherits System.Data.DataTable

    Public Sub New(ByVal tableName As String, ByVal ParamArray columnNames As String())

        Me.TableName = tableName

        For Each name As String In columnNames
            Me.Columns.Add(name)
        Next

    End Sub

End Class

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim table As New MyNewTable("Clientes", "ID", "Nome", "Contacto")

        Dim ds As New DataSet()
        ds.Tables.Add(table)

        For Each col As DataColumn In ds.Tables("Clientes").Columns
            Debug.WriteLine(col.ColumnName)
        Next

    End Sub

End Class

Penso que não seja isto que queres mas é o possível :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Se estiveres a usar C# 3.5 há uma forma simples de fazer o que queres, usar um Extension Method.

tens de criar uma classe estática e fazer o seguinte:

    static class Extensions
    {
        public static void Add(this DataRowCollection source, DataRowCollection drc){

            foreach (DataRow row in drc)         source.Add(row);

        }
    }

Estando isso no teu projecto usas como indicaste acima :)

Qualquer dúvida diz...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Se estiveres a usar C# 3.5 há uma forma simples de fazer o que queres, usar um Extension Method.

tens de criar uma classe estática e fazer o seguinte:

    static class Extensions
    {
        public static void Add(this DataRowCollection source, DataRowCollection drc){

            foreach (DataRow row in drc)         source.Add(row);

        }
    }

Estando isso no teu projecto usas como indicaste acima :)

Qualquer dúvida diz...

Era exactamente isso que precisava. Muito obrigado :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora