C# Winform 将datatable作为数据源绑定到DataGridview后显示为空!

public DataTable dvtodt(DataGridView dv)
{
    DataTable dt = new DataTable();
    DataColumn dc;
    for (int i = 0; i < dv.Columns.Count; i++)
    {
        dc = new DataColumn();
        dc.ColumnName = dv.Columns[i].Name.ToString();
        dt.Columns.Add(dc);
    }
    for (int j = 0; j < dv.Rows.Count; j++)
    {
        DataRow dr = dt.NewRow();
        for (int x = 0; x < dv.Columns.Count; x++)
        {
            dr[x] = dv.Rows[j].Cells[x].Value;
        }
        dt.Rows.Add(dr);
    }
    return dt;
}
//将DataTable 作为数据源绑定dataGridView1,点击事件后dataGridView1 竟然显示为空!!!
private void btn1_Click(object sender, DataGridViewCellMouseEventArgs e)
{
    DataTable d = new DataTable();
    d = eo.dvtodt(dataGridView1);
    BindingSource source = new BindingSource();
    source.DataSource = d;
    dataGridView_dpmt.DataSource = source;
}
//giegie们是哪里出问题了,整不明白了!

img
img

PS:我的DataGridView 用VS设置绑定了某个数据库的表作为数据源,会是这个原因吗?

测试了下在属性窗口中绑定过数据源重新设置DataSource无法覆盖原数据,但是可以新建一个datagridview,设置这个新datagridview的Location,Height,Width和原来的一样,删除dataGridView_dpmt,然后这个新建的datagridview进入form中,设置数据源可以自动绑定。有帮助麻烦点个采纳,谢谢~

img

img

        private void btn1_Click(object sender, EventArgs e)
        {
            DataTable d = new DataTable();
            d = dvtodt(dataGridView1);
            BindingSource source = new BindingSource();
            source.DataSource = d;

            var dg = new DataGridView();
            dg.Location = new Point(dataGridView2.Location.X, dataGridView2.Location.Y);
            dg.Width = dataGridView2.Width;
            dg.Height = dataGridView2.Height;
            //如果放到其他容器中下面这2句的this要改为容器对象的Name
            this.Controls.Remove(dataGridView2);
            this.Controls.Add(dg);

            dg.DataSource = d;
        }

望采纳,谢谢,绑定数据的方法试一试

// DataSet 、DataTable
// 方式1
DataSet ds=new DataSet ();
this.dataGridView1.DataSource=ds.Table[0];
this.dataGridView1.DataSource = ds.Tables["表名"];
// 方式2
DataTable dt=new DataTable();
this.dataGridView1.DataSource=dt;

// DataView
DataView dv = new DataView();
this.dataGridView1.DataSource = dv;

// 设置了DataMember
DataSet ds=new DataSet ();
this.dataGridView1.DataSource = ds;
this.dataGridView1.DataMember = "表名";

// ArrayList
ArrayList Al = new ArrayList();
this.dataGridView1.DataSource = Al;

// dic
Dictionary<string, string> dic = new Dictionary<string, string>();
this.dataGridView1.DataSource = dic;

// List
this.dataGridVi.DataSource = new BindingList(List);

你只给它指定了数据源,但是没有调用绑定方法
少写了一句dataGridView_dpmt.DataBind();