如何在使用Datagridview.rows.add()添加行之前合并行的数据?

时间:2014-11-11 11:29:51

标签: vb.net datagridview sharpdevelop

我遇到了这个问题,因为我希望我的代码能够工作,即使我已经在源中添加了新列。我的代码根据源的行数添加一行。我的代码缺乏考虑列数的能力。这是我的代码:

For Each srow As datagridviewrow In mytempDG.Rows
   dataGridView1.Rows.Add(srow.Cells(0).Value.tostring, srow.Cells(1).Value.tostring, _
   & srow.Cells(2).Value.tostring, srow.Cells(3).Value.tostring,srow.Cells(4).Value.tostring, _
   & srow.Cells(5).Value.tostring, srow.Cells(6).Value.tostring)
Next

上面的代码没问题,因为我有来自tempDG的7列(这是我的数据源btw)。但是,如果我添加了两个列(使其为9),该怎么办?然后我必须编辑源代码(添加“srow.cells(7).value.tostring,srow.cells(8).value ... etc”)

我知道如何遍历列,但我不知道如何将其转换为可由rows.add函数读取的数据。这是我到目前为止所尝试的:

Dim finrow As List(Of String)
finrow = New List(Of String)

For Each srow As datagridviewrow In mytempDG.Rows
   finrow.clear
   For Each scol As DataGridViewColumn In mytempDG.Columns
      finrow.add(srow.Cells(scol.Index).Value.ToString)             
   Next
   dataGridView1.Rows.Add(finrow)
Next

如何在使用rows.add()函数添加数据之前先创建数据集合?我也可以知道rows.add()需要什么样的数据?我假设它是一个值列表(在我的例子中,我使用了List(of String))。

提前谢谢你们,祝你们度过愉快的一天!

2 个答案:

答案 0 :(得分:1)

您可以向object的{​​{1}}方法提供Add数组:

DataGridView

我假设For Each srow As DataGridViewRow In mytempDG.Rows Dim obj(mytempDG.Columns.Count) as Object For col as Integer = 0 to mytempDG.Columns.Count - 1 obj(col) = srow.Cells(col).Value.ToString() Next dataGridView1.Rows.Add(obj) Next myTempDG,在这种情况下,您可以将DataGridView的行投射到myTempDG的数组,然后{{1} }:

DataGridViewRow

答案 1 :(得分:0)

好的我知道了

Dim numcol As Integer = mytempDG.Columns.count
Dim finrow(numcol) As String

For Each srow As datagridviewrow In mytempDG.Rows
   For Each scol As DataGridViewColumn In mytempDG.Columns
      finrow(scol.Index) = srow.Cells(scol.Index).Value.ToString            
   Next
   dataGridView1.Rows.Add(finrow)
Next

但似乎有点慢......

考虑到不将数据集传输到tempDG后,这要好得多..

For each xrow as DataRow in ds.Tables(0).Rows
   datagridview1.Rows.Add(xrow.ItemArray)
Next