用的datagridview绑定数据,为什么我得重新点击按钮时间才能将数据重新加载上?
我的意思是说,为什么用构造函数初始化,没有将新加入的数据在datagridview中显示出来,而必须点击按钮,触发button1_click才重新将心插入的数据显示了出来...
我的意思是说,为什么用构造函数初始化,没有将新加入的数据在datagridview中显示出来,而必须点击按钮,触发button1_click才重新将心插入的数据显示了出来?
展开
1个回答
展开全部
你好。要解释这个问题,首先我们要搞清楚,你的datasource究竟绑定的是什么。
由于你的代码中并没有贴出Class1.func()的部分,所以我只能猜测。你的这个函数返回的应当是一个DataTable类型的数据。
当datagridview的datasource绑定的是一个DataTable的时候,实际上就是告诉grid,数据都从这个DataTable里面取。
而当你从数据库取数据到DataTable之后,DataTable就是一个本地的变量。
比如说,之前数据库里有3条记录,取到一个DataTable变量里。
然后数据库里插入了2条新记录,一共5条了。这个时候DataTable变量里是几条记录?
很显然,还是3条。因为你取出来之后就放在内存里,实际上这个DataTable和数据库之间已经毫无联系了。
同样的道理,所以当你把DataTable绑定到datagridview之后,无论你原来的数据库如何变化。这里datagridview的显示都不会有变化。
而当你重新调用Class1.func()的时候,实际上是又去数据库取了一份最新的DataTable回来,所以此时显示有了变化。
由于你的代码中并没有贴出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 这两个有什么区别吗,为什么点击按钮就可以,但是从构造函数不可以呢
追答
构造函数取数据,是在画面刚打开的时候就做了。
在画面打开的那一个瞬间取了一次。是你插入之前的数据。
而按钮点击取数据,是重新又拉取了一次数据。所以才会把新插入的数据也拉下来。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询