多个datagridview之间互相传值

摘要:
主窗体中有一个按钮和一个datagridview控件。主窗体查询供应商信息表,子窗体左侧的datagridview查询产品信息表。如果左侧的产品没有设置单价,将弹出一个小窗口,让用户设置价格。最后,单击“确定”将数据保存在datagridview控件右侧的datagridview中,格式为////publicListL{get;set;}publicstringSuppGuid{get set;}/////用户选择的产品////˂///DataTable对象publicdelegatevoidDtProductInfo;publicDtProductInfo产品信息;//////用于在所选product=null&&list中保存dgv_数据集。总行数˃0){dgv_product.DataSource=list.ums_product信息视图;}}catch{MessageBox.Show;}dt.Columns.Add;数据.列.Add;数据.列.Add;dt.Columns.Add;}//////根据产品名称或编号查询产品信息////privatevoidtxt_product_TextChanged{try{//根据产品类别查询产品Guid。
 一个winform程序,有两个窗体,一个是住窗体,一个是子窗体。主窗体中有一个button按钮和一个datagridview控件。点击button按钮弹出子窗体,子窗体如图:多个datagridview之间互相传值第1张

这其中涉及到两张表,一张是生产产品的供应商信息表,一张是产品信息表。主窗体查询的是供应商信息表,子窗体左边的datagridview查询的是产品信息表。当点击中间的“=>”按钮是,把左边选中的产品添加到右边。如果左边的产品没有设置单价,则弹出一个小窗体让用户设置价格(左边datagridview隐藏了“单价”列)。并保存,在右边就要显示出来。右边也可以移除产品到左边。最后点击“确定”按钮时,右边datagridview中的数据都要保存到主窗体中的datagridview控件中。

// <summary>
        /// 保存用户选择的产品。
        /// </summary>
        public List<UMS_BASE_出品信息视图> L { get; set; }
        public string SuppGuid { get; set; }

        /// <summary>
        /// 用户选中的产品。
        /// </summary>
        /// <param name="dt">DataTable对象</param>
        public delegate void DtProductInfo(DataTable dt);
        public DtProductInfo onProductInfo;

        /// <summary>
        /// 用来保存dgv_已选产品中的数据集。
        /// </summary>
        DataTable dt = new DataTable();
        UMS_BASE_分页出品信息表 list = new UMS_BASE_分页出品信息表();

        public FrmAddProduct()
        {
            InitializeComponent();
        }

        private void FrmAddProduct_Load(object sender, EventArgs e)
        {
            dgv_产品.AutoGenerateColumns = dgv_已选产品.AutoGenerateColumns = false;
            string strGuid = "";

            try
            {
                //根据出品类别查询出品Guid。
                strGuid = cmb_产品性质.Text == "" ? "" : RestService.SelectGoodsCategory(BaseInfo.Storeguid).Where(n => n.类别 == cmb_产品性质.Text.Trim()).FirstOrDefault().GUID.ToString();

                //产品信息。
                list = RestService.SelectProducedInformationList(BaseInfo.Storeguid, 1, 22, "编码", "asc", strGuid, txt_产品.Text.Trim());
                if (list != null && list.总行数 > 0)
                {
                    dgv_产品.DataSource = list.ums_出品信息视图;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

            dt.Columns.Add("品名", typeof(string));
            dt.Columns.Add("进货价", typeof(string));
            dt.Columns.Add("单价", typeof(string));
            dt.Columns.Add("GUID", typeof(string));
        }

        /// <summary>
        /// 根据产品名称或者编号查询产品信息。
        /// </summary>
        private void txt_产品_TextChanged(object sender, EventArgs e)
        {
            try
            {
                //根据出品类别查询出品Guid。
                string strGuid = cmb_产品性质.Text == "" ? "" : RestService.SelectGoodsCategory(BaseInfo.Storeguid).Where(n => n.类别 == cmb_产品性质.Text.Trim()).FirstOrDefault().GUID.ToString();

                UMS_BASE_分页出品信息表 list = RestService.SelectProducedInformationList(BaseInfo.Storeguid, 1, 22, "编码", "desc", strGuid, txt_产品.Text.Trim());
                dgv_产品.DataSource = list;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        private void btnChoose_Click(object sender, EventArgs e)
        {
            ChooseProduct();
        }

        /// <summary>
        /// 选择左边的产品添加到右边。
        /// </summary>
        private void ChooseProduct()
        {
            if (dgv_产品.SelectedRows.Count > 0)
            {
                try
                {
                    DataRow dr = dt.NewRow();
                    dr[0] = dgv_产品.Rows[dgv_产品.CurrentRow.Index].Cells[0].Value.ToString();
                    dr[1] = dgv_产品.Rows[dgv_产品.CurrentRow.Index].Cells[1].Value.ToString();
                    dr[2] = dgv_产品.Rows[dgv_产品.CurrentRow.Index].Cells[2].Value.ToString();
                    dr[3] = dgv_产品.Rows[dgv_产品.CurrentRow.Index].Cells[3].Value.ToString();
                    dt.Rows.Add(dr);

                    dgv_已选产品.DataSource = dt;
                    foreach (UMS_BASE_出品信息视图 ub in list.ums_出品信息视图)
                    foreach (UMS_BASE_出品信息视图 ub in list.ums_出品信息视图)
                    {
                        if (ub.品名 == dgv_产品.Rows[dgv_产品.CurrentRow.Index].Cells["品名"].Value.ToString())
                        {
                            string strGuid = "";

                            //如果价格为空,则让用户设置价格。
                            if (string.IsNullOrEmpty(dgv_产品.Rows[dgv_产品.CurrentRow.Index].Cells["零售价"].Value.ToString()))
                            {
                                strGuid = dgv_产品.Rows[dgv_产品.CurrentRow.Index].Cells["GUID"].Value.ToString();
                                FrmSetPrice frmSetprice = new FrmSetPrice();
                                frmSetprice.ProGuid = strGuid;

                                if (frmSetprice.ShowDialog() == DialogResult.OK)
                                {
                                    dr[1] = dgv_产品.Rows[dgv_产品.CurrentRow.Index].Cells["零售价"].Value.ToString();
                                }
                            }
                            break;
                        }
                    }

                   dgv_产品.DataSource = null;
                    dgv_产品.DataSource = list.ums_出品信息视图;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            else
            {
                MessageBox.Show("请选择添加的产品!");
            }
        }

        private void dgv_产品_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            ChooseProduct();
        }

        private void dgv_已选产品_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            DeleteProduct();
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            DeleteProduct();
        }

        /// <summary>
        /// 把右边的数据移除到左边。
        /// </summary>
        private void DeleteProduct()
        {
            if (dgv_已选产品.SelectedRows.Count > 0)
            {
                try
                {
                    dgv_已选产品.DataSource = dt;
                    UMS_BASE_出品信息视图 ub = new UMS_BASE_出品信息视图();
                    ub.品名 = dgv_已选产品.Rows[dgv_已选产品.CurrentRow.Index].Cells[0].Value.ToString();
                    list.ums_出品信息视图.Add(ub);
                    dgv_已选产品.Rows.Remove(dgv_已选产品.Rows[dgv_已选产品.CurrentRow.Index]);

                    dgv_产品.DataSource = null;
                    dgv_产品.DataSource = list.ums_出品信息视图;
                    dgv_产品.Refresh();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            else
            {
                MessageBox.Show("请选择要移除的产品!");
            }
        }

        /// <summary>
        /// 把要保存的产品添加到UC_SupplierFiles中。
        /// </summary>
        private void btnOk_Click(object sender, EventArgs e)
        {
            UC_SuppliersToGoods uc = new UC_SuppliersToGoods();
            uc.Show();
            if (onProductInfo != null)
            {
                onProductInfo(dt);
            }
            this.Close();
        }
    }
}

设置价格中的代码:

 private void FrmSetPrice_Load(object sender, EventArgs e)
        {
            UMS_BASE_出品信息视图 u = RestService.SelectProducedInformation(Guid.Parse(ProGuid));
            lbl_产品名称.Text = u.品名;
            lbl_产品类别.Text = u.类别名称;
        }

        /// <summary>
        /// 为产品设定价格。
        /// </summary>
        private void buttonX1_Click(object sender, EventArgs e)
        {
            UMS_Base_SuppliersGoodsInfo u = new UMS_Base_SuppliersGoodsInfo();
            u.F_Price = decimal.Parse(txt_价格.Text.Trim());

            try
            {
                RestService.InsertSuppliersGoodsInfo(u);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

            this.DialogResult = DialogResult.OK;
        }

代码中有一些问题,望各位指正。实现开始说的目的,也可以用其他的方法,在这里只是提供一个参考方法。

免责声明:文章转载自《多个datagridview之间互相传值》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ThingJS 官方demo:3D房屋展示记elk打包时的问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

jmeter:BeanShell 预处理程序(引用java脚本,实现参数化)

这里以为本地的注册接口为例子: 如图:这个注册接口需要传2个参数,用户名和密码,用户名是唯一的,密码可以一样,需要对用户名进行参数化。 首先在jmeter里面添加BeanShell 预处理程序,如图: 这里需要编写java代码,对用户名实现参数化: 调试好以后,运行效果如图: 代码如下: package com.mg.java.study; imp...

Go-结构体

Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念。Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性。 类型别名和自定义类型 自定义类型 在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型,Go语言中可以使用type关键字来定义自定义类型。 自定义类型是定义了一个全新的类型。我们可以基于内置的...

Java数据库连接--JDBC基础知识(操作数据库:增删改查)

一、JDBC简介   JDBC是连接java应用程序和数据库之间的桥梁。   什么是JDBC?   Java语言访问数据库的一种规范,是一套API。   JDBC (Java Database Connectivity) API,即Java数据库编程接口,是一组标准的Java语言中的接口和类,使用这些接口和类,Java客户端程序可以访问各种不同类型的数据库...

java 实现导出excel报表

1.场景描述   使用java实现导出excel报表。使用Apache POI。   Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 2.Maven依赖 <dependency> <groupId>org.apache.poi&l...

Kafka平滑滚动升级2.4.0指南

今天测试了下kafka从2.0.0滚动升级至2.4.0,下面做一下记录。这个链接是Kafka官网对升级2.4.0的指南,可以参考  http://kafka.apache.org/24/documentation.html#upgrade好了,步入正题吧!首先,线上环境,在对kafka滚动升级的过程中,一定是不能影响业务运行的吧,否则一顿操作猛如虎,业务骂...

Spread for Windows Forms快速入门(10)绑定到数据库

下面的教程将带你创建一个工程, 并将Spread控件绑定到一个数据库。 在这个教程中,主要的步骤为: 1. 将Spread添加到一个数据绑定工程中 2. 设置数据库连接 3. 指定要使用的数据 4. 创建数据集 5. 把Spread控件绑定到数据库 6. 通过改变单元格类型改善显示效果 将Spread添加到一个数据绑定工程中 打开一个新的Visual St...