1

「 detailsDataGridView 」からデータテーブルを取得する必要がありますが、変換できません。エラー: System.Windows.Forms.BindingSource を System.Data.DataTable 型にキャストできません。

何か案が?コード、私は試しました。

    DataTable d = detailsDataGridView.DataSource as DataTable;
/////////////
        DataTable dt = new DataTable();
        dt = (DataTable)detailsDataGridView.DataSource;
////////////
        BindingSource bs = new BindingSource();
        bs.DataSource = detailsDataGridView.DataSource;
        DataTable d = (DataTable)(bs.DataSource);
////////////
DataTable data = GetDataTableFromDGV(dgvMyMembers);

    private DataTable GetDataTableFromDGV(DataGridView dgv)
    {
        var dt = ((DataTable)dgv.DataSource).Copy();
        foreach (DataGridViewColumn column in dgv.Columns)
        {
            if (!column.Visible)
            {
                dt.Columns.Remove(column.Name);
            }
        }
        return dt;
    }
4

1 に答える 1

0

この方法を試してください。必要なものは次のとおりです。

DataGridView の名前は detailsDataGridView であるため、次のようにします。

DataTable データ = GetDataTableFromDGV(detailsDataGridView);

次に、データはデータテーブルです。

    private DataTable GetDataTableFromDGV(DataGridView dgv)
    {
        var dt = ((DataTable)dgv.DataSource).Copy();
        foreach (DataGridViewColumn column in dgv.Columns)
        {
            if (!column.Visible)
            {
                dt.Columns.Remove(column.Name);
            }
        }
        return dt;
    }

この質問に対する私の回答はこちら

幸運を!

于 2013-04-21T12:46:34.047 に答える