您的位置:程序门 -> .net技术 -> c#



请教关于sql server 的计算型字段


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请教关于sql server 的计算型字段[已结贴,结贴人:woodheadhn]
发表于:2007-01-30 15:46:47 楼主
在sql   server   的表结构中设置   字段c的公式为     字段a*字段b,在.net中以datagridview与该表绑定,但修改字段a或字段b时字段c的值不会立即更新,要保存后再次打开字段c的值才会更新,有什么办法让字段c的值立即更新呢?
先谢过!
发表于:2007-01-30 15:49:261楼 得分:5
不知道
帮定   那分走人
发表于:2007-01-30 15:50:472楼 得分:5
更新一条记录后,马上向数据库更新
发表于:2007-01-30 15:54:163楼 得分:5
使用sql   server的触发器
发表于:2007-01-30 16:20:144楼 得分:0
我不希望改一条纪录就保存,因为用户可能不保存当前修改,我的目的是当用户在datagridview中修改字段a或字段b时,字段c的值立即被重算,而不用等到我下次再打开该表.
发表于:2007-01-30 16:24:145楼 得分:5
找到ide成生的updatecommand的语句
把c列的值(应该为@c)改为   @a*@b
发表于:2007-01-30 16:33:366楼 得分:5
触发器
发表于:2007-01-30 16:56:487楼 得分:20
可以在datagridview的cellendedit事件下进行处理...

判断如果当前的列是列a或者列b,更改列c的值...
发表于:2007-01-30 17:02:118楼 得分:55
sample   example:

private   void   datagridview1_cellendedit(object   sender,   datagridviewcelleventargs   e)
                {
                        //假如列a和列b的索引分别为0和1,列c的索引是2
                        if   (e.columnindex   ==   0   ¦ ¦   e.columnindex   ==   1)
                        {
                                int   valuea   =   convert.toint32(this.datagridview1.rows[e.rowindex].cells[0].value);
                                int   valueb   =   convert.toint32(this.datagridview1.rows[e.rowindex].cells[1].value);
                                this.datagridview1.rows[e.rowindex].cells[2].value   =   valuea   *   valueb;
                        }
                }

不知道是不是这意思?
发表于:2007-01-30 17:18:229楼 得分:0
谢谢liujia_0421(snowlover)   ,基本上是这个意思,只是想知道有没有更好的办法,比如有没有一个什么recompute()方法,因为表结构是用户自定义的,所以这样实现会很麻烦
发表于:2007-01-30 17:22:4810楼 得分:0
就是说在datagridview中根据表结构中字段c的公式重算一下字段c,而不是自己写:     this.datagridview1.rows[e.rowindex].cells[2].value   =   valuea   *   valueb;
,因为公式是用户定义的
发表于:2007-01-30 17:27:4711楼 得分:0
似乎也只能重新绑定数据源...

不过这样做效率就有点低了...
发表于:2007-01-31 09:44:3512楼 得分:0
我试了,只有保存datagridview所做修改,并再次fill   数据集,才可得到计算后的字段c,如果不提交datagridview所做修改,就只能自己写代码来计算字段c,好象还没有什么好办法


快速检索

最新资讯
热门点击