我看了看你的思路好像有一点不太对。
你的文本框首先绑定到数据对象上(好像是视图),然后新建记录还是这个文本框上。(不知道理解的对不对!!)
我认为如果是我如上理解,那么就有一些问题。问题在被绑定数据库后,他就是一个被动者。他的变化应当根据绑定对象进行改变。
所以在思路上你在没有解除绑定的情况下有给文本框指定新的对象。这样容易出错的。
在程序上,你运行了ExecuteNonQuery后出错,说明这时候绑定对象和输入对象有点问题。反正从你描述来看我不知道应当执行那个数据。解决方法:在新建是解除绑定,点击ExecuteNonQuery后在加入绑定,在绑定前最好清空文本框。你试一试吧!
你的文本框首先绑定到数据对象上(好像是视图),然后新建记录还是这个文本框上。(不知道理解的对不对!!)
我认为如果是我如上理解,那么就有一些问题。问题在被绑定数据库后,他就是一个被动者。他的变化应当根据绑定对象进行改变。
所以在思路上你在没有解除绑定的情况下有给文本框指定新的对象。这样容易出错的。
在程序上,你运行了ExecuteNonQuery后出错,说明这时候绑定对象和输入对象有点问题。反正从你描述来看我不知道应当执行那个数据。解决方法:在新建是解除绑定,点击ExecuteNonQuery后在加入绑定,在绑定前最好清空文本框。你试一试吧!
其实刚开始的时候,我就是按你说的在添加的时候先解除文本框的
绑定,在执行完后再重新绑定,但是这样需要写一些代码来同时更新
当前纪录集以达到和数据库同步的作用但是如果我不解除绑定 用this.BindingContext[myDv].AddNew();
和this.BindingContext[myDv].EndCurrentEdit();
然后添加纪录,就可以在当前视图和数据库中同时更新数据。并且我也说了如果把过滤代码去掉
一切都正常。所以我需要知道为什么,跟踪不到,请帮忙了!!!!!!!!!!
首先假设你的文本框是a,绑定的数据是b,需要加入文本框的数据是c。
是这样,当a绑定b后,a的值就时时都等于b。如果b有什么变化a同样跟着变化。同理a有什么变化b也同样跟着变化。
在绑定的情况下a如果负值等于c。
根据以上的推理b=c。
这样就要更改b,
可是b是一个视图,是不能被更改的。所以就出现错误了。(就算b不是视图,将c负值给b也是你不想看到的。)理论上这是个逻辑错误。
因为a恒等于b,而你要a=c,但是b!=c,所以错误。其实我也不知道分析的对不对,但是感觉上是这样的。所以仅供参考。
这代码去掉,就完全对了?(添加的时候完全符合我的要求呢)
我的删除和修改都没错,就是添加有问题,好像是视图过滤后,用
this.BindingContext[myDv].AddNew();绑定老是有问题
而不过滤就可以,是不是过滤后有什么事件发生了,导致
this.BindingContext[myDv].AddNew();这句代码不正确?其实用代码来试试很快的,只作一个添加,保存都不用写就可以很快的
试出来的,看看问题到底是什么!