俗话说,磨刀不误砍柴工,先说一下情况。点击按钮后往dgv中添加一行(行中字段含有数量),再点击一次,又添加一行。

假如这两条信息一样。则要进行叠加(数量相加)。我的思路是这样的:每次点击一次就往dgv添加一行,同时拿到行的主键ID。

当再添加一行时,就遍历dgv中的行,拿每行的主键ID和点击时的主键ID作比较,如果相同,就获取这行的数量,加到已有的行

中去,最后移除这行。否则,直接添加一行。

 1  private void btnzengJia_Click(object sender, EventArgs e)
 2         {
 3             decimal WholesalePrice = 0;//定义零售总价
 4             decimal RetailPrice = 0;//定义批发总价
 5             int newShockCount = 0;//定义新库存数
 6             if (txtYaoPinDaiMa .Text.ToString(). Trim () !=null &&txtBaoZhuangDanWei  .Text.ToString().Trim ()!=""
 7                 &&txtChuKuShu  .Text !="")
 8             {
 9                 if(txtChuKuShu.Text.Trim ().Length <9)
10                 {
11                     if (Convert.ToInt32(txtKuCunShu.Text.Trim().ToString()) >=
12                     Convert.ToInt32(txtChuKuShu.Text.Trim().ToString()))
13                    {//绑定数据
14                      dgvLingYao.Rows.Add();
15                         int dgvPlaceRowCountRow = dgvLingYao.Rows.Count - 1;
16                         dgvLingYao.Rows[dgvPlaceRowCountRow].Cells["药品名称"].Value = txtYaoPinMingCheng.Text.Trim();
17                         dgvLingYao.Rows[dgvPlaceRowCountRow].Cells["药品规格"].Value = txtGuiGe.Text.Trim();
18                         dgvLingYao.Rows[dgvPlaceRowCountRow].Cells["批发价"].Value = txtPiFaJia.Text.Trim();
19                         dgvLingYao.Rows[dgvPlaceRowCountRow].Cells["零售价"].Value = txtLingShouJia.Text.Trim().ToString ();
20                         dgvLingYao.Rows[dgvPlaceRowCountRow].Cells["包装单位"].Value = txtBaoZhuangDanWei.Text.Trim();
21                         dgvLingYao.Rows[dgvPlaceRowCountRow].Cells["出库数量"].Value = txtChuKuShu.Text.Trim();
22                         dgvLingYao.Rows[dgvPlaceRowCountRow].Cells["备注"].Value = txtBeiZhu.Text.Trim();
23                         dgvLingYao.Rows[dgvPlaceRowCountRow].Cells["药品ID"].Value = intDrugID;
24                         //计算新库存数
25                     newShockCount = Convert.ToInt32(txtKuCunShu.Text.Trim().ToString())
26                                   - Convert.ToInt32(txtChuKuShu.Text.Trim().ToString());
27                     txtKuCunShu.Text = newShockCount.ToString();
28                         int updatecount = myfrmGongYaoLinYongShengQingClient.updateShockCount(intDrugID, Convert.ToInt32
29                                       (txtKuCunShu.Text.Trim().ToString()));//修改库存数
30                         foreach (DataGridViewRow dgvr in dgvLingYao.Rows)
31                     {
32                         if (dgvr.Cells["批发价"].Value != null)//计算批发价总额
33                         {
34                             WholesalePrice += Convert.ToDecimal(dgvr.Cells["批发价"].Value) * Convert.ToInt32(dgvr.Cells["出库数量"].Value);
35                         }
36                         if (dgvr.Cells["零售价"].Value != null)//计算零售价总额
37                         {
38                             RetailPrice += Convert.ToDecimal(dgvr.Cells["零售价"].Value) * Convert.ToInt32(dgvr.Cells["出库数量"].Value);
39                         }
40                     }
41                    //绑定数据到文本
42                     LbWholesalePrices.Text = WholesalePrice.ToString();
43
44                     LbRetailPrice.Text = RetailPrice.ToString();
45                     LbMargin.Text = (WholesalePrice - RetailPrice).ToString();     
46                             int intlock = 0;//定义一个整形锁(循环数)
47
48                             foreach (DataGridViewRow dgvr in dgvLingYao.Rows)
49                             {
50                                 intlock++;
51                                 if (Convert.ToInt32(dgvr.Cells["药品ID"].Value) == intDrugID)
52                                 {
53                                     if (intlock < dgvLingYao.Rows.Count)//循环到倒数第二条
54                                     {
55                                     //相加库存数
56                                         dgvr.Cells["出库数量"].Value = Convert.ToInt32(dgvr.Cells["出库数量"].Value)
57                                         + Convert.ToInt32(dgvLingYao.Rows[dgvPlaceRowCountRow].Cells["出库数量"].Value);
58                                         dgvLingYao.Rows.RemoveAt(dgvPlaceRowCountRow);//移除相同的那行数据
59                                     }
60                                 }
61                             }
62                             LbRecordCount.Text = dgvLingYao.Rows.Count.ToString();
63                         }
64                 else
65                 {
66                     panel2.Visible = true;
67                     label18.Text = "库存不足";
68                     ShowTime = DateTime.Now;
69                 }
70              }
71                 else
72                 {
73                     panel2.Visible = true;
74                     label18.Text = "出库数太大";
75                     ShowTime = DateTime.Now;
76                 }
77             }
78             else
79             {
80                 panel2.Visible = true;
81                 label18.Text = "填完整再增加";
82                 ShowTime = DateTime.Now;
83             }
84         }

转载于:https://www.cnblogs.com/flytop/p/8532836.html

叠加dgv中相同的行信息相关推荐

  1. SAP中MD04中交货计划行例外信息30和再计划日期的分析

    笔者之前写过一篇<SAP中MD04中交货计划行例外信息07的分析>的文章.解读了07提示信息表示没有按预定的交货计划及时足量交货.其实在MD04中相关的提示信息还有很多种,笔者也在实际应用 ...

  2. 存在文件student.txt,文件格式为Sname:Sbirthyear:Sdept:Sage:Ssex,从文件中查找Sdept为“cs”的行信息,输出到文件csStudent.txt文件中去。

    题目:存在文件student.txt,文件格式为Sname:Sbirthyear:Sdept:Sage:Ssex,从文件中查找Sdept为"cs"的行信息,输出到文件csStude ...

  3. 利用python获取指定url在ATS中缓存对象的信息

    业务需求 给定url,如何查询指定的ATS中是否有该url的缓存对象信息?如果缓存了的话,希望提供该缓存对象的大小,缓存时间,缓存文件名,缓存份数(document alternative)等等信息 ...

  4. mysql隐藏密码_MySQL在Linux系统中隐藏命令行中的密码的方法

    在命令行中输入命令并不是一个好主意,会造成安全问题.但是如果你决定去写一个应用,而这个应用需要在命令行中使用密码或者其他敏感信息.那么,你能通过以下方法禁止系统的其他用户轻易的看到这些敏感数据 呢?, ...

  5. UILabel中的多行文本

    是否可以像在UITextView那样在UILabel具有多行文本,还是应该改用第二行? #1楼 您可以使用\\r转到下一行,同时使用NSString填充UILabel . UILabel * labe ...

  6. 如何在Java中解析命令行参数?

    在Java中解析命令行参数的好方法是什么? #1楼 我不建议使用Apache Common CLI库,因为它是非线程安全的. 它使用带有静态变量和方法的有状态类来进行内部工作(例如OptionBuil ...

  7. 在JavaScript中创建多行字符串

    我在Ruby中有以下代码. 我想将此代码转换为JavaScript. JS中的等效代码是什么? text = <<"HERE" This Is A Multiline ...

  8. Android平台Chromium net中的代理配置信息获取

    在计算机网络中,代理服务器 扮演着发起请求的客户端与服务器之间的中间人的角色.客户端连接到代理服务器,请求一些服务,比如文件,网页,或其它可以从服务器获得的资源,代理服务器以简化和控制复杂度的形式获取 ...

  9. JavaJDK中的命令行工具

    JavaJDK中的命令行工具 本文内容主要学习自<深入理解Java虚拟机>,超赞的一本书强烈推荐! 一,常用JDK监控和故障处理工具 命令名称 全称 用途 jstat JVM Statis ...

最新文章

  1. pyglet wave.Error: file does not start with RIFF id
  2. 67 Airflow配置MySQL数据库和LocalExecutor
  3. x86汇编指令具体解释
  4. 使用Git命令时出现fatal: this operation must be run in a work tree提示,该如何解决
  5. U-Boot启动过程完全分析
  6. Scala 读取文件
  7. C++ 学习之函数重载、基于const的重载
  8. asp 退出登录修改cookie能进入后台_某logCMS的代码审计:越权到后台getshell
  9. 泰山OFFICE在LINUX上的文件图标终于全部正确
  10. 已知s=1×2×3×…×n,计算出s不大于5000时n的最大值。
  11. JQuery each详细用法
  12. MTA18ASF2G72PDZ-2G6D1内存条MTA18ASF2G72PDZ-2G6E1
  13. 使用云存储解决方案,主要有哪些优势
  14. 用MATLAB写斐波那契数列
  15. Java代码获取网络和本地视频时长等信息
  16. 小福利,用python打造自己的图书管理系统
  17. C++ 文件操作(CFile类)
  18. android调用最新的谷歌地图方法
  19. android 高德地图设置不能旋转_地图导航哪家强?
  20. 天天生鲜 - App设计

热门文章

  1. 抖音可以传多长的视频?
  2. Linux xorg 调整分辨率,编写xorg.conf解决Ubuntu分辨率不可调的问题
  3. 如何在win10中安装jdk
  4. 电子货架标签----拣货系统
  5. error LNK2001: 无法解析的外部符号 __imp____iob_func
  6. EPICS Scaler记录和相关软件
  7. 转]udev实现原理(含检测U盘拔插例子)检测热插拨 (hotplug)
  8. 3D打印切片软件--cura的二次开发(2)(界面分析与汉化)(修改版增加图片)
  9. vim java win
  10. html文件太大,怎样压缩文件(文件太大怎么办)