Просто измените:
t.Rows[0].ItemArray[0] = "new value";
до
t.Rows[0][0] = "new value";
Вот и все!
РЕДАКТИРОВАТЬ (Добавлено пояснение):
Изменения в элементах ItemArray не отслеживаются, поэтому никакие изменения не отражаются в значениях данных (код в оригинальном вопросе)
Однако вы можете использовать ItemArray для одновременного изменения всех строк, например:
t.Rows[0].ItemArray = new object[] {"new value"};
В этом случае изменения отслеживаются, и вы получите ожидаемый результат.