datagridview动态添加列和行以及添加之后刷新操作

有的时候需要动态的添加datagridview 的列名:

    System.Windows.Forms.DataGridViewTextBoxColumn[] Column = new DataGridViewTextBoxColumn[columnNum];
            for (int i = 0; i < columnNum; i++)
            {
                Column[i] = new DataGridViewTextBoxColumn();
            }
            Column[0].HeaderText = "检验单编号";
            Column[0].Name = "检验单编号";
            Column[0].ReadOnly = true;
            Column[0].DefaultCellStyle.BackColor = Color.LightSteelBlue;
            Column[0].ReadOnly = true;
            Column[1].HeaderText = "样本编号";
            Column[1].Name = "样本编号";
            int j = 2;
            foreach (DataRow row in dt.Rows)
            {
                if (j < columnNum)
                {
                    Column[j].HeaderText = row["QCITEM_NAME"].ToString();
                    Column[j].Name = row["QCITEM_NAME"].ToString();
                    j++;
                }
            }
            this.dgv.Columns.AddRange(Column);
            this.ResumeLayout(false);
在动态添加行和列的时候最后不要直接给datagridview 赋值DataSource。直接赋值DataTable往往会出现问题。

也要动态的将DataTable转换为逐行添加数据

      if (oldRowNum > 0)
            {
                foreach (DataRow row in ddt.Rows)
                {
                    object[] Array = new object[columnNum];
                    for (int i = 0; i < columnNum; i++)
                    {
                        Array[i] = row[i];
                    }
                    dgv.Rows.Add(Array);
                }
            }

还有一个重点就是在给datagridview 动态添加列的时候在添加完数据需要刷新,并清空datagridview 所有内容。

     dgv.Columns.Clear();
清空完成之后再Datatable的结果逐行添加进去。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要添加数据并刷新DataGridView,您需要执行以下步骤: 1. 将数据添加到数据源中。 2. 调用DataGridView的Refresh方法,以便它可以重新绘制自己并显示新数据。 3. 如果您使用的是绑定的数据源,您还需要调用BindingSource的ResetBindings方法,以便它可以通知DataGridView数据源已更改。 以下是一个示例代码片段,演示如何添加数据并刷新DataGridView: ``` // 假设您有一个名为dataGridView1的DataGridView控件和一个名为dataTable的DataTable对象 // 添加新行到dataTable DataRow newRow = dataTable.NewRow(); newRow["Column1"] = "Value1"; newRow["Column2"] = "Value2"; dataTable.Rows.Add(newRow); // 刷新DataGridView dataGridView1.Refresh(); // 如果您使用的是绑定的数据源,还需要调用BindingSource的ResetBindings方法 bindingSource.ResetBindings(false); ``` 请注意,如果您正在使用虚拟模式(Virtual Mode)来填充DataGridView,您需要在添加数据后调用DataGridView的Invalidate方法,以便它可以重新绘制自己。 ### 回答2: DataGridView是一个常用的数据展示控件,我们在使用时需要随时向其中添加新的数据,而且这些数据有可能是从数据库中获取的,有可能是用户自己输入的,所以我们需要刷新DataGridView来实现数据的动态展示。 刷新DataGridView有多种方式,常见的有以下几种: 1. 直接使用DataGridView.DataSource属性重新绑定数据源。 这种方式比较简单,只需要将DataGridView的DataSource属性重新指定为数据源即可。例如: dataGridView1.DataSource = dataTable1; 其中dataTable1是一个DataTable对象,可以从数据库中获取或者通过用户输入等方式创建。 但是重新绑定数据源的方式会导致一些问题,比如如果用户在DataGridView中自己进行了排序、过滤等操作,这些操作会被清除掉,不太适合需要保留用户自定义操作的情况。 2. 使用DataGridView.Rows.Add方法向其中添加新的行。 这种方式比较直接,只需要在需要添加数据的时候,调用DataGridView.Rows.Add方法即可。例如: dataGridView1.Rows.Add("1", "张三", "男", "20"); 这样就向DataGridView添加了一行数据,第一列是1,第二列是“张三”,依次类推。当然,我们可以根据需要自定义添加多列数据。 这种方式适合需要动态添加数据,但是如果数据量比较大,可能会导致界面卡顿。 3. 使用DataGridView.DataSource的BindingList属性。 这种方式比较灵活,可以动态地向BindingList中添加数据,然后再将BindingList赋值给DataGridView.DataSource。例如: BindingList<Person> peopleList = new BindingList<Person>(); peopleList.Add(new Person() { Id = "1", Name = "张三", Gender = "男", Age = "20" }); dataGridView1.DataSource = peopleList; 这样就先创建了一个BindingList,然后往里面添加了一个Person对象,最后将BindingList赋值给DataGridView,就完成了数据的动态展示。 这种方式比较灵活,可以方便地对数据进行排序、过滤等操作,也可以针对DataGridView中的单元格进行自定义格式化等操作。但是需要注意的是,如果数据量比较大,可能会导致内存占用过多,需要在使用时做好内存管理。 总的来说,根据不同的需求,可以选择不同的方式来刷新DataGridView。在使用过程中,需要根据数据量、用户需求等多方面因素进行考虑,以选择最合适的方式来实现数据的动态展示。 ### 回答3: DataGridView是Windows Forms应用程序中常用的控件,用于显示和编辑表格数据。在DataGridView中,数据呈现在一系列行和列中。需要添加新的数据,或修改现有的数据,然后通过刷新DataGridView来显示这些更改。 添加数据 添加数据至DataGridView时,可以使用多个方法,其中最简单的方法是使用DataGridView.Rows.Add()方法。该方法允许您添加单个或多个行到DataGridView。下面是如何使用DataGridView.Rows.Add()方法添加一行数据到DataGridView的示例: ```C# private void btnAdd_Click(object sender, EventArgs e) { DataGridViewRow newRow = new DataGridViewRow(); newRow.CreateCells(dataGridView1); newRow.Cells[0].Value = "1"; newRow.Cells[1].Value = "John"; newRow.Cells[2].Value = "Doe"; dataGridView1.Rows.Add(newRow); } ``` 刷新DataGridView刷新DataGridView以显示添加的新数据,可以使用DataGridView.Refresh()方法。它们可以通过在添加数据后调用此方法来使DataGridViewUI中更新。类似地,如果您更改了现有数据,则可以使用该方法使更改立即反映在DataGridView中。 还有一种刷新DataGridView的方法是使用DataGridView.Update()方法。它在刷新DataGridView时与DataGridView.Refresh()类似,但更加高效。当您修改或添加大量数据时,它与DataGridView.Refresh()方法相比提供了更好的性能。下面是使用DataGridView.Update()方法刷新DataGridView的示例: ```C# private void btnAdd_Click(object sender, EventArgs e) { DataGridViewRow newRow = new DataGridViewRow(); newRow.CreateCells(dataGridView1); newRow.Cells[0].Value = "1"; newRow.Cells[1].Value = "John"; newRow.Cells[2].Value = "Doe"; dataGridView1.Rows.Add(newRow); dataGridView1.Update(); } ``` 总结 添加新数据后,为了确保DataGridView中立即显示更改,应该刷新DataGridViewDataGridView.Refresh()方法是最简单的方法,但由于性能原因,可以使用DataGridView.Update()方法。DataGridView.Update()方法更适合处理大量数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值