Когда вы делаете MailsListBox.DataSource = ds;
, вы на самом деле не устанавливаете набор данных как источник данных, а скорее как DataView по умолчанию. Сетка знает, как с этим справиться.
В обоих случаях, Grid и Listbox, вы также должны установить DataMember. Используйте что-то вроде:
MyAdapter.Fill(ds, "Foo");
MailsListBox.DataSource = ds;
MailSlistBox.DataMember = "Foo";
MailsListBox.DisplayMember = "email";
MailsListBox.DataBind();