你好。要解释这个问题,首先我们要搞清楚,你的datasource究竟绑定的是什么。
由于你的代码中并没有贴出Class1.func()的部分,所以我只能猜测。你的这个函数返回的应当是一个DataTable类型的数据。
当datagridview的datasource绑定的是一个DataTable的时候,实际上就是告诉grid,数据都从这个DataTable里面取。
而当你从数据库取数据到DataTable之后,DataTable就是一个本地的变量。
比如说,之前数据库里有3条记录,取到一个DataTable变量里。
然后数据库里插入了2条新记录,一共5条了。这个时候DataTable变量里是几条记录?
很显然,还是3条。因为你取出来之后就放在内存里,实际上这个DataTable和数据库之间已经毫无联系了。
同样的道理,所以当你把DataTable绑定到datagridview之后,无论你原来的数据库如何变化。这里datagridview的显示都不会有变化。
而当你重新调用Class1.func()的时候,实际上是又去数据库取了一份最新的DataTable回来,所以此时显示有了变化。
追问那我用构造函数取和下面的button_click 这两个有什么区别吗,为什么点击按钮就可以,但是从构造函数不可以呢
追答构造函数取数据,是在画面刚打开的时候就做了。
在画面打开的那一个瞬间取了一次。是你插入之前的数据。
而按钮点击取数据,是重新又拉取了一次数据。所以才会把新插入的数据也拉下来。