欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

DataGridView怎样实现添加、删除、上移、下移一行

程序员文章站 2022-07-05 11:06:53
场景 在Winform中使用DataGridView实现添加一行、删除一行、上移一行、下移一行。 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书、教程推送与免费下载。 实现 添加一行 效果 删除一行 ......

场景

在winform中使用datagridview实现添加一行、删除一行、上移一行、下移一行。

注:

博客主页:

关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

添加一行

private void taskviewedithelper_onaddstep(object sender, eventargs e)
        {
           
            datagridviewrow dr = new datagridviewrow();
            dr.createcells(this.datagridview_task_viewedit);
            dr.cells[0].value = "公众号" + this.datagridview_task_viewedit.rows.count;
            dr.cells[1].value = "霸道的程序猿";
            dr.cells[2].value = "大量编程教程与资源";
            //this.datagridview_task_viewedit.rows.insert(0, dr);    //添加的行作为第一行
            this.datagridview_task_viewedit.rows.add(dr);//添加的行作为最后一行
        }

效果

DataGridView怎样实现添加、删除、上移、下移一行

 

 

 

DataGridView怎样实现添加、删除、上移、下移一行

删除一行

        private void taskviewedithelper_onremovestep(object sender, eventargs e)
        {
            if (this.datagridview_task_viewedit.selectedrows == null || this.datagridview_task_viewedit.selectedrows.count == 0)
            {
                xtramessagebox.show("请先选择删除步,单击第一列以选中行");
            }
            else
            {
                if (xtramessagebox.show("确定要删除选中步吗?") == system.windows.forms.dialogresult.ok)
                {
                    foreach (datagridviewrow dr in this.datagridview_task_viewedit.selectedrows)
                    {
                        if (dr.isnewrow == false)
                        {
                            //如果不是已提交的行,默认情况下在添加一行数据成功后,datagridview为新建一行作为新数据的插入位置
                            this.datagridview_task_viewedit.rows.remove(dr);
                        }
                    }
                }
            }
        }

 

效果

 DataGridView怎样实现添加、删除、上移、下移一行DataGridView怎样实现添加、删除、上移、下移一行

 

 

上移一行

private void taskviewedithelper_onupstep(object sender, eventargs e)
        {
           
            if (this.datagridview_task_viewedit.selectedrows == null || this.datagridview_task_viewedit.selectedrows.count == 0)
            {
                xtramessagebox.show("请先选择一行,单击第一列以选中行");
            }
            else
            {
                if (this.datagridview_task_viewedit.selectedrows[0].index <= 0)
                {
                    xtramessagebox.show("此行已在顶端,不能再上移!");
                }
                else
                {
                    //注意:这里是非绑定数据情况的上移行
                    // 选择的行号  
                    int selectedrowindex = getselectedrowindex(this.datagridview_task_viewedit);
                    if (selectedrowindex >= 1)
                    {
                        // 拷贝选中的行  
                        datagridviewrow newrow = datagridview_task_viewedit.rows[selectedrowindex];
                        // 删除选中的行  
                        datagridview_task_viewedit.rows.remove(datagridview_task_viewedit.rows[selectedrowindex]);
                        // 将拷贝的行,插入到选中的上一行位置  
                        datagridview_task_viewedit.rows.insert(selectedrowindex - 1, newrow);
                        datagridview_task_viewedit.clearselection();
                        // 选中最初选中的行 
                        datagridview_task_viewedit.rows[selectedrowindex - 1].selected = true;
                    }
                }
            }
        }

 

注:

这里是没绑定数据源情况下的上移一行,添加的一行时通过是上面新增的方法实现的。

此时datagridview的datasource是为空的。

其中用到获取选中行的方法:

        private int getselectedrowindex(datagridview dgv)
        {
            if (dgv.rows.count == 0)
            {
                return 0;
            }
            foreach (datagridviewrow row in dgv.rows)
            {
                if (row.selected)
                {
                    return row.index;
                }
            }
            return 0;
        }

效果

DataGridView怎样实现添加、删除、上移、下移一行

 

 

 

DataGridView怎样实现添加、删除、上移、下移一行

下移一行

        private void taskviewedithelper_ondownstep(object sender, eventargs e)
        {
            if (this.datagridview_task_viewedit.selectedrows == null || this.datagridview_task_viewedit.selectedrows.count == 0)
            {
                xtramessagebox.show("请先选择一行,单击第一列以选中行");
            }
            else
            {
                if (this.datagridview_task_viewedit.selectedrows[0].index >= this.datagridview_task_viewedit.rows.count - 1)
                {
                    xtramessagebox.show("此行已在底端,不能再下移!");
                }
                else
                {
                    int selectedrowindex = getselectedrowindex(this.datagridview_task_viewedit);
                    if (selectedrowindex < datagridview_task_viewedit.rows.count - 1)
                    {
                        // 拷贝选中的行  
                        datagridviewrow newrow = datagridview_task_viewedit.rows[selectedrowindex];
                        // 删除选中的行  
                        datagridview_task_viewedit.rows.remove(datagridview_task_viewedit.rows[selectedrowindex]);
                        // 将拷贝的行,插入到选中的下一行位置  
                        datagridview_task_viewedit.rows.insert(selectedrowindex + 1, newrow);
                        datagridview_task_viewedit.clearselection();
                        // 选中最初选中的行  
                        datagridview_task_viewedit.rows[selectedrowindex + 1].selected = true;
                    }
                }
            }
           
        }

 

效果

DataGridView怎样实现添加、删除、上移、下移一行

 

 

 

DataGridView怎样实现添加、删除、上移、下移一行