Согласно документации привязки данных RadGrid , свойство DataSource
принимает экземпляры следующих типов:
DataSet
DataTable
DataView
- Массив
DataRow
- Любая коллекция объектов, которая реализует эти интерфейсы:
IListSource
IList
IEnumerable
ICustomTypeDescriptor
По данным контрольной проверки, SqlDataReader
не поддерживается, поскольку он не реализует упомянутые выше интерфейсы, поэтому NotSupportedException
сгенерировал при непосредственном связывании содержимого SqlDataReader
в свойство DataSource
.
В качестве обходного пути вы можетесоздайте новый экземпляр DataTable
и заполните его содержимое из SqlDataReader
следующим образом:
var dt = new DataTable();
using (SqlConnection con = new SqlConnection(mydatasource))
{
con.Open();
SqlCommand cmd = new SqlCommand("select SRID, Name, Result from EditBatchResultsView where SRID = " + drpSRID.Text, con);
SqlDataReader reader = cmd.ExecuteReader();
// fill DataTable contents
dt.Load(reader);
// assign DataTable as data source instead
radGridView1.DataSource = dt;
}
// DataBind goes here
Примечание:
Конкатенация строк для построения SQL-запроса может быть склонна кSQL-инъекция.Использование параметров при передаче значения управления сервером в запрос SQL является более рекомендуемым способом:
var dt = new DataTable();
using (SqlConnection con = new SqlConnection(mydatasource))
{
con.Open();
SqlCommand cmd = new SqlCommand("select SRID, Name, Result from EditBatchResultsView where SRID = @SRID", con);
cmd.Parameters.Add("@SRID", SqlDbType.VarChar).Value = drpSRID.Text;
SqlDataReader reader = cmd.ExecuteReader();
// fill DataTable contents
dt.Load(reader);
// assign DataTable as data source instead
radGridView1.DataSource = dt;
}
Проблема, связанная с данной:
Заполнение таблицы данных из устройства чтения данных