if you partially fill node data:
[VB]
Dim data As Object() = New Object() {"Column " & i.ToString}
Me.FlyGrid.Rows.Items.Add(New Node(data))
FlyGrid fill unfilled data, and restructure Node.Value with missing values, it is slow operation, as FlyGrid need to analyze Node.Value and if node.Value is array - redimension this array.
More correct, fast and optimal way to fill grid in your sample, looks as following:
[VB]
Private Sub btnAddRow_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddRow.Click
Dim i As Integer
Me.FlyGrid.BeginInit()
For i = 0 To 2000
Me.txtStatus.Text = "Loading rows " & i.ToString & " of 2000,please wait..."
Me.txtStatus.Refresh()
Dim data As Object() = New Object(Me.FlyGrid.Columns.Items.Count) {}
data(0) = "Column " & i.ToString
Me.FlyGrid.Rows.Items.Add(New Node(data))
Next i
Me.FlyGrid.EndInit()
Me.txtStatus.Text = ""
End Sub
PS: If you add a huge amount of data or make massive change in the FlyGrid, use FlyGrid.BeginInit/EndInit pair to freeze/unfreeze FlyGrid refreshing events, this increases performance of FlyGrid initialization.