作业和装订

时间:2017-01-14 16:47:58

标签: c# datagridview datatable

我有一个问题。让我们解释一下: 我创建了一个DataTable' DataT'变量和添加到此变量的行.SameTime我有datagridview。在我发布了DataT'之后到DataGridView的DataSource属性。 我得到了DataT' Rows.Count属性。它的值10.但当我移除5行DataGridView时,此值从10减少到5。 那么为什么减少我的价值我只是删除DataGridView的行,但我没有删除' DataT'虽然行计数为' DataT'从10减少到5。 我没有解决这个问题。

编辑: 是的我绑定了datatable.But同样的问题还有其他状态。我用一个例子解释:

int num;
MPI_Init_thread(&argc, &argv, MPI_THREAD_MULTIPLE, &num);

int a;
char filename[1000];
MPI_Comm_rank(MPI_COMM_WORLD, &a);
sprintf(filename, "file.txt", a);
FILE *fp = fopen(filename, "w");

if (num){
    for (int i = 0; i < 10; i++) {
        fprintf(fp, genRandom()); // genRandom() - gives me error because different char types 
    }
    fclose(fp);
}
MPI_Finalize();

1 个答案:

答案 0 :(得分:1)

Henk Holterman中指出的comment有两个原因使Table2更改

  • 由于Table1用作网格DataSource,因此网格中的任何更改都会反映在网格中。这是GridView的预期行为。

    GridView有自己的Rows集合,在设置DataSource时会更新。对Rows集合的任何更改(如删除项目)都将应用于DataTable设置为数据源。结果datagridview1.Rows.RemoveAt(0);实际上间接Table1引用的对象中删除了行。

  • 您的两个变量(Table1Table2)都指向同一个对象 - 因此,只要DataTable发生任何事情(即GridView删除的行),当您检查时,更改就会显示变量之一。

    以下代码执行&#34;浅拷贝&#34;当你似乎期望完全克隆类似于int的行为时:

    Table2 = Table1; 
    

    在该作业完成后,Table1Table2都会引用在DataTable行上创建的DataTable Table1 = new DataTable();

    查看更多What is the difference between a deep copy and a shallow copy?