Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Приведение DataGrid к DataTable


Автор: HalkaR 11.5.2005, 18:47
В MSDN нашел
Код

DataTable myTable;
   // Assumes the DataGrid is bound to a DataTable.
   myTable = (DataTable) DataGrid1.DataSource;


Но у меня не работает - пишет что приведение не верное.
Код

DataTable myTable = (DataTable) dataGrid1.DataSource;

Автор: Kurt 11.5.2005, 22:46
Ошибка возникает на этапе компиляции или во время работы программы?
Дело в том, что я сейчас опробовал такое преобразование - все ОК.
Подозреваю, что ошибка может быть в следующем:
строка
Код
DataTable myTable = (DataTable) dataGrid1.DataSource;

записывает в myTable объект, расположенный по ссылке, что хранится в dataGrid1.DataSource, преобразованный к классу DataTable.
Итак, отсюда следует, что dataGrid1.DataSource должен ссылаться на класс DataTable (или на класс-наследник от DataTable). Поэтому внимательно посмотри, что ты кладешь в DataSource.
Вот я, например, делал так
Код

DataSet ds;
..
dataGrid1.DataSource = ds.Tables["table1"];

То есть я присваивал ТАБЛИЦУ, объект класса DataTable. При таком подходе, преобразование датасурса в DataTable проходит без проблем.
Теперь, предположим, что я выполнил операцию заполнения DataSource вот так:
Код
dataGrid1.DataSource = ds;
dataGrid1.DataMember = "table1";

По сути, я делаю то же самое. Однако, при попытке преобразования я получаю ошибку. Ведь в этом случае DataSource ссылается на объект класса DataSet, к-й уже невозможно преобразовать в DataTable.
Вот и все.

З.Ы.
Цитата(Kurt)
записывает в myTable объект, расположенный..

Есессно, присваивается лишь ССЫЛКА на объект. Я просто не стал усложнять предложение. smile

Автор: mr.DUDA 12.5.2005, 09:43
Если покороче, то в DataSource может лежать как DataTable, так и DataSet. А может вообще быть DataView, ArrayList и даже Hashtable smile (если сам назначаешь DataSource гриду).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)