Try something like this:
// set up dgv
dataGridView1.ColumnCount = 3;
dataGridView1.Columns[0].HeaderText = "Id";
dataGridView1.Columns[1].HeaderText = "Name";
dataGridView1.Columns[2].HeaderText = "ItemToBuy";
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCellsExceptHeaders;
dataGridView1.Columns[2].DefaultCellStyle.WrapMode = DataGridViewTriState.True;
string[] data =
{
"1,mike,Toshiba portage",
"1,mike,Dell latitude",
"2,nancy,Toshiba portage",
"2,nancy,Sony vaio",
"3,rosa,Asus",
"3,rosa,Hp",
"4,farid,Sony vaio",
"4,farid,Hp"
};
// analyze data and create rows
Dictionary<string, int> dict = new Dictionary<string, int>();
int rowNum = 0;
foreach(string line in data)
{
string[] items = line.Split(',');
if (dict.ContainsKey(items[0]))
{
dataGridView1.Rows[dict[items[0]]].Cells[2].Value += "\r\n" + items[2];
}
else
{
dict.Add(items[0], rowNum);
dataGridView1.Rows.Add(items[0], items[1], items[2]);
rowNum++;
}
}