Jump to content
Tiago Salgado

DataTable - overload do metodo para adicionar novas linhas

Recommended Posts

Tiago Salgado

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.

Share this post


Link to post
Share on other sites
vitortomaz

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()

Share this post


Link to post
Share on other sites
jpaulino

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 :)

Share this post


Link to post
Share on other sites
DanielAmorim

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...


Daniel Amorim

VP for xRTML

http://www.xrtml.org http://www.realtime.co

Share this post


Link to post
Share on other sites
Tiago Salgado

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.