龙空技术网

「Winform开发小技巧02」DataGridView的一些用法(下)

辙心在学习 282

前言:

当前同学们对“datagridview代码修改数据”都比较珍视,小伙伴们都需要分析一些“datagridview代码修改数据”的相关文章。那么小编也在网摘上搜集了一些有关“datagridview代码修改数据””的相关知识,希望我们能喜欢,同学们一起来了解一下吧!

Hello,感谢阅读这篇文章。

首先声明,我不是一个程序员,.net相关的知识完全出于个人兴趣自学的,这个小系列主要分享一些作为小白的我在学习winform过程中踩的一些坑,希望能帮到大家。

承接上一篇,继续分享DataGridView的一些用法。

1、DataGridView数据前面自动加序号

我们知道,DataGridView呈现数据时,前面是没有序号的,而有时候,呈现数据时的自动编号可以让数据更加直观。

我们可以在DataGridView的RowPostPaint事件中,添加以下代码,即可轻松实现数据的自动编号啦

private void DgvStockInForm_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)        {            //DGV自动编号,DgvStockInForm是我的DataGridView控件的命名,记得改成自己的            Rectangle rectangle = new Rectangle(e.RowBounds.Location.X, e.RowBounds.Location.Y, DgvStockInForm.RowHeadersWidth - 4, e.RowBounds.Height);            TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(), DgvStockInForm.RowHeadersDefaultCellStyle.Font, rectangle, DgvStockInForm.RowHeadersDefaultCellStyle.ForeColor,                TextFormatFlags.VerticalCenter | TextFormatFlags.Right);            }

效果如下:

注意看,GIF图中DataGridView在没有添加数据的时候,默认会有一个空白行,这是因为DataGridView的AllowUserToAddRows属性设置为True了,我们把它改成False就没有空白行了。当然也可以直接修改控件,点击右上角小三角,去掉勾选“启用添加”。步骤如下:

2、DataGridView数据联动更新

在用DataGridView的时候,我们可能会有一点困惑,如果我想编辑其中一个单元格的内容,另外一个单元格的内容同时跟着更新,需要怎么操作呢,其实只要简单几句代码就可以实现啦。

首先,这个操作是在DataGridView的EditingControlShowing事件中发生,然后编辑的时候会触发一个委托事件(委托事件需要我们自己写)。

我直接贴代码。

// DgvOutByBOM是我的DataGridView的命名private void DgvOutByBOM_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)        {            //判断当前的控件            if(e.Control.GetType().Equals(typeof(DataGridViewComboBoxEditingControl)))            {                DataGridViewComboBoxEditingControl editingControl = e.Control as DataGridViewComboBoxEditingControl;                ////编辑控件内容时触发委托事件                editingControl.TextChanged += new EventHandler(editingControl_TextChanged);            }                    }        void editingControl_TextChanged(object sender, EventArgs e)        {            //内容更改时,用更改后的内容重新生成SQL语句            string StrSql = $"SELECT QTY FROM inventory WHERE PROJECT='{this.DgvOutByBOM.CurrentCell.EditedFormattedValue}' AND MPN='{this.DgvOutByBOM.CurrentRow.Cells["MPN"].Value}'";            //重新查询数据库            DataTable DtResult= new ConnectDB().QueryDB(StrSql);                        if(DtResult.Rows.Count==0)            {                //如果查询结果为空,值为0                this.DgvOutByBOM.CurrentRow.Cells["Inventory"].Value = "0";                this.DgvOutByBOM.CurrentRow.Cells["DlyQTY"].Value = "0";            }            else            {                //如果查询结果不会空                this.DgvOutByBOM.CurrentRow.Cells["Inventory"].Value = DtResult.Rows[0][0].ToString();                this.DgvOutByBOM.CurrentRow.Cells["DlyQTY"].Value= DtResult.Rows[0][0].ToString();            }                    }

效果杠杠的:

自己摸索学习,写起来也是蛮吃力,如果对各位有一点点帮助,麻烦不吝关注点赞收藏转发呀

如果对此篇内容感兴趣,也欢迎阅读我上一篇文章。

「Winform开发小技巧01」DataGridView的一些用法(上)

标签: #datagridview代码修改数据