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



datagridview即时刷新计算列的问题


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


datagridview即时刷新计算列的问题[已结贴,结贴人:victorycy]
发表于:2007-06-27 19:05:09 楼主

        比如源表中有两列:单价、数量,计算列   总价   =单价*数量,运行时更新单价或数量时,总价没能及时更新,要等到焦点移到其他行或保存更新时,计算列才会重新计算。我现在想在更新单价或数量时,即时更新总价,要用什么方法?
        谢谢。
发表于:2007-06-27 19:43:501楼 得分:5
如果不刷新页面还需要及时响应的话,只能通过javascript来实现。
发表于:2007-06-27 21:16:532楼 得分:0
谢谢.   忘了说了我这里是winform的.
发表于:2007-06-28 08:36:013楼 得分:5
winform下好象达不到你的要求吧
发表于:2007-06-28 09:11:034楼 得分:5
用timer实现,不停的查数据库,这样就行了。
发表于:2007-06-28 09:46:335楼 得分:5
din
发表于:2007-07-12 22:16:046楼 得分:0
以下是我做东西时用到的代码,你可以参考一下,没什么注释,还请见谅
                private   void   datagridview1_cellendedit(object   sender,   datagridviewcelleventargs   e)
                {
                        double   price,value,age;//price=单价,value=数量,age=小计
//当“数量”或“单价”单元格处于编辑状态时进行计算“小计”
                        if   (datagridview1.columns[e.columnindex].name   ==   "数量 "   ¦ ¦   datagridview1.columns[e.columnindex].name   ==   "单价 ")
                        {
//检验“数量”和“单价”单元格内容不为空
                                if   ((string)datagridview1.rows[e.rowindex].cells[ "数量 "].value   !=   " "   &&   (string)datagridview1.rows[e.rowindex].cells[ "单价 "].value   !=   " ")
                                {
                                        value   =   double.parse((string)datagridview1.rows[e.rowindex].cells[ "数量 "].value);
                                        price   =   double.parse((string)datagridview1.rows[e.rowindex].cells[ "单价 "].value);
                                        //if(value!=null ¦ ¦price!=null)
                                        age=   value   *   price;

                                        datagridview1.rows[e.rowindex].cells[ "小计 "].value   =   age.tostring(   "¥######.0 ");
                                }

                        }


                }

//************************************************

                private   void   datagridview1_cellenter(object   sender,   datagridviewcelleventargs   e)
                {
                        double   price,   value,   age;
                        if   (datagridview1.columns[e.columnindex].name   ==   "数量 "   ¦ ¦   datagridview1.columns[e.columnindex].name   ==   "单价 ")
                        {
                                if   ((string)datagridview1.rows[e.rowindex].cells[ "数量 "].value   !=   " "   &&   (string)datagridview1.rows[e.rowindex].cells[ "单价 "].value   !=   " ")
                                {
                                        value   =   double.parse((string)datagridview1.rows[e.rowindex].cells[ "数量 "].value);
                                        price   =   double.parse((string)datagridview1.rows[e.rowindex].cells[ "单价 "].value);
                                        //if(value!=null ¦ ¦price!=null)
                                        age=   value   *   price;

                                        datagridview1.rows[e.rowindex].cells[ "小计 "].value   =   age.tostring( "¥######.0 ");
                                }

                        }


                }
主要是在单元格获得焦点、失去焦点、编辑和完成编辑等几个事件中进行计算,看你的需求选择哪几个事件中处理计算。


快速检索

最新资讯
热门点击