【问题标题】:How do I move row from one DataGridView to another DataGridView?如何将行从一个 DataGridView 移动到另一个 DataGridView?
【发布时间】:2011-02-17 23:09:57
【问题描述】:

我有两个具有相同列架构的 DataGridView(尽管有两个不同的 DataView 作为 DataSource - 如果这很重要)。将一行从一个 datagridview 移动到另一个的最佳/最快方法是什么?

【问题讨论】:

  • 我希望它也是可能的。这也是我的问题:)...listview 和 listbox 可以做到这一点..
  • 我可能应该指定DataGridViews 实际上都绑定到DataDables。所涉及的 DataGridView 的重要性在于我想将 selected 行从一个网格移动到另一个网格。请参阅下面的答案,了解我发现的最快方法 - 如果您有更好的方法,请加入。

标签: c# winforms datagridview


【解决方案1】:

我相信,如果您在 DataTable table1 中有一行并想将其添加到 DataTable table2 中,您可以执行以下操作:

table2.Rows.Add(row.ItemArray);

那么您还必须像这样删除该行:

table1.Rows.Delete(row);

这只是伪代码,但应该可以工作,我过去做过。

当然,如您所述,它仅在两个表具有相同架构的情况下才有效。

【讨论】:

  • 我现在已经看到您在谈论 DataGridViews 而不是 ADO.NET DataTables,如果您的控件绑定到 DataTables 我的解决方案是有效的,否则我无论如何建议对绑定的数据源执行此操作而不是直接在 UI 数据绑定控件上。
【解决方案2】:

尽管我有两个 DataTable 作为我的 DataGridView 的绑定,但我看不出有任何方法可以使用 DataGridView 来获取选定的行并移动它们,这是我的应用程序的要求。

GridUtility.cs

    /// <summary>
    /// Gets a list of the DataRow objects that are the datasources for a DataGridViews selected rows
    /// </summary>
    /// <param name="rows"></param>
    /// <returns></returns>
    public static DataRow[] GetSelectedDataRows(DataGridView grid)
    {   
        DataRow[] dRows = new DataRow[grid.SelectedRows.Count];
        for (int i = 0; i < grid.SelectedRows.Count; i++)
            dRows[i] = ((DataRowView)grid.SelectedRows[i].DataBoundItem).Row;

        return dRows;  
    }

    /// <summary>
    /// move row from one grid to another
    /// </summary>
    public void MoveRows(DataTable src, DataTable dest, DataRow[] rows)
    {
        foreach (DataRow row in rows)
        {   
            // add to dest
            dest.Rows.Add(row.ItemArray);

            // remove from src
            src.Rows.Remove(row);
        }
    }

要使用它:

GridUtility.MoveRows(fromTable, toTable, 
    GridUtility.GetSelectedDataRows(fromDataGridView));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多