Есть как минимум четыре способа сделать это (от самого простого до самого сложного)
1) Linq to DataSet Это предполагает типизированный DataSet с двумя DataTables Products и ProductTypes.Это не требуется (они не обязательно должны находиться в одном наборе данных, а ProductType не обязательно должен быть DataTable)
для использования linq для набора данных требуется .NET 3.5 и выше
Dim ProductList = _
(From product In p.products.AsEnumerable() _
Join types In p.productTypes.AsEnumerable() _
On product.ProductTypeID Equals types.ProductTypeID _
Select New With {
.ProductId = product.ProductID, _
.Description = product.Description, _
.Type = types.Description}).ToList
Me.DataGridView1.DataSource = ProductList
2) Получите данные так, как вам нужно, и привяжите их к нужному столбцу
3) Не используйте TextBoxColumn и вместо него используйте ComboBoxDataColumn .
4) Создать пользовательский DataGridViewColumn , который выполняет поиск.