【问题标题】:Fill DataGridView in new columns在新列中填充 DataGridView
【发布时间】:2018-07-06 12:03:48
【问题描述】:

我有一个使用 DataTable → Fill() 方法填充的 DataGridView。

我想在同一 DataGridView 中的下一列中添加另一个表,就在另一个表结束时。有可能吗?

现在我有这样的东西

da.Fill(dt);
dataGridView1.DataSource = null;
dataGridView1.Rows.Clear();
dataGridView1.DataSource = dt;

我想在新列中向同一个 DataGridView 添加另一个 DataTable。谢谢

【问题讨论】:

标签: c# datagridview datatable dataset fill


【解决方案1】:

使用DataTableMerge 函数,然后向上移动元素。请参阅以下代码:

private void AddTwoDataTable()
{
    DataTable dt1 = new DataTable();
    dt1.Columns.Add("ID1", typeof(int));
    dt1.Columns.Add("Value1", typeof(string));
    dt1.Columns.Add("Value2", typeof(string));

    DataTable dt2 = new DataTable();
    dt2.Columns.Add("ID2", typeof(int));
    dt2.Columns.Add("Value3", typeof(string));

    dt1.Rows.Add(new object[] { 1, "a", "ab"});
    dt1.Rows.Add(new object[] { 2, "b", "bc" });
    dt1.Rows.Add(new object[] { 3, "c", "cd" });
    dt1.Rows.Add(new object[] { 4, "d", "de" });

    dt2.Rows.Add(new object[] { 101, "x" });
    dt2.Rows.Add(new object[] { 102, "y" });
    dt2.Rows.Add(new object[] { 103, "y" });

    var newtable = MergetwoTables( dt1, dt2 );
    dataGridView1.DataSource = newtable;
}

public static DataTable MergetwoTables(DataTable dt1, DataTable dt2)
{
    DataTable table = new DataTable("NewTable");

    table.Merge(dt1);
    table.Merge(dt2);

    int maxRows1 = dt1.Rows.Count;
    int maxColu1 = dt1.Columns.Count;
    int maxRows2 = dt2.Rows.Count;
    int maxColu2 = dt2.Columns.Count;

    // copy elements from new rows
    for (int r = maxRows1; r < maxRows1 + maxRows2; r++)
        for (int c = maxColu1; c < maxColu1 + maxColu2; c++)
            table.Rows[r - maxRows1][c] = table.Rows[r][c];

    //delete new rows
    var maxrows = maxRows1 > maxRows2 ? maxRows1 : maxRows2;
    for (int r = maxRows1 + maxRows2 - 1; r >= maxrows; r--)
        table.Rows[r].Delete();

    return table;
}

输出:

【讨论】:

  • 谢谢你,最后好像没用,但我很感激。
  • @Juanma 你能提供一个不起作用的例子吗?
  • 我刚刚意识到,如果第二个表的行数超过第一个表的行数,这将丢失第二个表中的一些行。现在,我修好了。
  • 很好,非常感谢,我明天试试,我会告诉你的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-21
  • 1970-01-01
相关资源
最近更新 更多