Позвонив по номеру Read()
, вы уже «забрали» первый ряд (следовательно, почему Bag не отображается - потому что вы ничего с ним не делаете);и все же dt.Load
это также собирается сделать while(reader.Read())
.Я ожидаю, что вы хотите (заметьте, я не звоню Read
здесь, и у вас нет петли while
):
if(reader.HasRows)
{
// load via dt.Load() and show
}
else
{
// hide
}
Причина, по которой он выходит, состоит в том, что, как только вы позвонили Load
Вы уже прочитали все данные, поэтому больше нечего читать.Честно говоря, я не знаю, закрывает ли читатель неявное завершение потока TDS, но вы должны использовать:
using(var cmd = new SqlCommand (" Select * From items order by ItemID ", conn))
using(var reader = cmd.ExecuteReader())
{
// everything else in here
}