将DataRow转换为TableRow

时间:2011-08-02 12:33:26

标签: c# asp.net

足够简单。找不到简单的解决方案。不确定它们是否是一个简单的解决方案? :/

我有一个dataTable。我基本上想要实现这个......

DataTable dt = new DataTable();
dataAdapter.Fill(dt);

TableRow tr = new TableRow();
tr = dt.Rows[0];

但我无法从DataRow转换为TableRow!

帮助!

亚历

3 个答案:

答案 0 :(得分:3)

TableRow是一个UI元素,它表示一个Table控件中的一行。 DataRow是一个数据元素,它表示DataTable中的一行数据。你不能像这样在两者之间进行转换,因为它们只是不同的野兽。

如果您希望使用UI,则应将Table控件绑定到DataTable。然后,您可以拉出单个TableRow对象。

你想做什么?

答案 1 :(得分:1)

你可以用这个

TableRow tr = new TableRow();

    tr .Cells(0).Text = dt.Rows[0][0];

因为TabeRow有这么多单元格,所以你必须要指定单元格。没有方法可以将整个数据库添加到TableRow中,两者都是不同的。

答案 2 :(得分:1)

如果您的目标是在UI上显示dataTable(或任何其他数据源)中的数据,为什么不使用转发器?

无论如何你不能只将DataTableRow转换为TableRow,但你必须自己做。 看看下面的代码

private void GenerateTable()

    {

        DataTable dt = CreateDataTable();

        Table table = new Table();

        TableRow row = null;



        //Add the Headers

        row = new TableRow();

        for (int j = 0; j < dt.Columns.Count; j++)

        {

            TableHeaderCell headerCell = new TableHeaderCell();

            headerCell.Text = dt.Columns[j].ColumnName;

            row.Cells.Add(headerCell);

        }

        table.Rows.Add(row);



        //Add the Column values

        for (int i = 0; i < dt.Rows.Count; i++)

        {

            row = new TableRow();

            for (int j = 0; j < dt.Columns.Count; j++)

            {

                TableCell cell = new TableCell();

                cell.Text = dt.Rows[i][j].ToString();

                row.Cells.Add(cell);

            }

            // Add the TableRow to the Table

            table.Rows.Add(row);

        }

        // Add the the Table in the Form

        form1.Controls.Add(table);

    }

源:

http://geekswithblogs.net/dotNETvinz/archive/2009/06/24/fill-asp.net-table-with-data-from-datatable.aspx