| 
                         Sice s křížkem po funuse, ale řešil jsem stejný problém a řekl bych že jsem to vyřešil elegantněji než je cyklus, takže se chci podělit, třeba se to bude někomu hodit. Každý sloupec v DataTable (tzn. DataColumn) má vlastnost AutoIncrement, takže pokud plníte dataTable pomocí metody Fill vložte do datatable ještě před voláním metody Fill nový sloupec a nastavte příslušné vlastnosti: 
'vytvoření nového sloupce
 Dim sloupecCislo As DataColumn = New DataColumn
 sloupecCislo.ColumnName = "RowNumber"
 sloupecCislo.DataType = Type.GetType("System.Int32")
 sloupecCislo.AutoIncrement = True
 sloupecCislo.AutoIncrementSeed = 1
 sloupecCislo.AutoIncrementStep = 1
'přidání sloupce do dataTable
 myDataTable.Columns.Add(sloupecCislo)
Výhoda je že si můžete nastavit počáteční hodnotu, velikost přírustku a také Unique, což může do jistné míry pro interní účely aplikace suplovat absenci PK i když by tam správně většinou měl být:) A hlavně tento způsob není závislý na způsobu plnění dataTable, takže pokud později přidáte do dataTable další řádky, číslo řádku se doplní aniž by jste museli znovu spouštět cyklus na číslování. 
                        
                     |