Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Отображение данных DataGridView


Автор: IAT 6.12.2011, 15:27
Доброго времени суток!
Есть база данных, для которой создается DataSet, в итоге должна вводиться информация в эту базу и выводиться в DataGridView. 
Проблема возникает когда DataGridView.DataSource принимает список некоторых объектов:

Код

                List<Storage> allstorages = accessToDataArchive.GetAllStorages();
                Storage_dgv.DataSource = allstorages;


allstorages - экземпляр объекта (одна из таблиц БД), в нем присутствует еще список данных(их может быть несколько в одном поле), которые нужно вывести в DataGridView. После запуска программы выводятся только те поля таблицы, которые могут принимать только единственные значения. Подскажите пожалуйста как вывести данные, которые представлены списком??????

http://s1.ipicture.ru/

Автор: VirusUZ 6.12.2011, 18:46
Код

ArrayList lst=new ArrayList();
while(..){
...
Storage str=new Storage();
...
lst.add(str);
}
dataGriedView1.DataSource=lst;

Автор: IAT 7.12.2011, 14:40
У меня  примерно что-то вроде этого вышло:
Код


        public List<Storage> GetAllStorages()
        {
            if (this.archiveDataSet == null)
                return null;
            DataRowCollection searchedRow = this.archiveDataSet.storage.Rows;

            return this.GetRestPartsOfStorage(searchedRow);
        }

        List<Storage> GetRestPartsOfStorage(DataRowCollection searchedRows)
        {
            if (searchedRows == null || searchedRows.Count == 0)
                return null;

            List<Storage> storages = new List<Storage>();

            foreach (archivefundDataSet.storageRow storRow in searchedRows)
            {
                Storage storage = new Storage();
                storage.ID_Storage = storRow.ID_Storage;
                storage.RegistDate = storRow.RegistDate;
                storage.NoteStorage = storRow.Note;

                if (storRow.laboratoryRow != null)
                {
                    storage.NumberLaboratory = storRow.laboratoryRow.NumberLaboratory;
                }
                else
                {
                    throw new Exception("Cannot find corresponding Laboratory");
                }

                if (storRow.applicantcompanyRow != null)
                {
                    storage.NameCompany = storRow.applicantcompanyRow.NameCompany;
                }
                else
                {
                    throw new Exception("Cannot find corresponding Company");
                }

                DataRow[] testobjectRows = archiveDataSet.testobject.Select("Storage_ID = " + storRow.ID_Storage);                
                
                if (testobjectRows != null && testobjectRows.Length != 0)
                {
                    foreach (archivefundDataSet.testobjectRow testobRow in testobjectRows)
                    {
                        storage.NameTestObject = new List<string>();
                        storage.NameDesign = new List<string>();

                        storage.NameTestObject.Add(testobRow.NameTestObject);
                        storage.NameDesign.Add(testobRow.NameDesign);
                    }
                }
                else
                {
                    throw new Exception("Cannot find corresponding TestObject");
                }

                if (storRow.workcontractRow != null)
                {
                    storage.NumberContract = storRow.workcontractRow.NumberContract;
                    storage.DateContract = storRow.workcontractRow.DateContract;
                }
                else
                {
                    throw new Exception("Cannot find corresponding Contract");
                }
                storages.Add(storage);                
            }
            return storages;


а потом уже передал на DataGridView:
Код

                List<Storage> allstorages = accessToDataArchive.GetAllStorages();
                Storage_dgv.DataSource = allstorages;

======================================================
а зачем ArrayList создавать ??

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