Здравствуйте.
Создала окно на основе wnd_BaseMemDSGridArea
Добавила DataLink, привязанный к MemoryDataset, у которого есть несколько полей.
Привязала грид к этому даталинку.
Добавила к даталинку DataGridView и у него определила колонки и указала у колонок в качестве DataFieldName поля из MemoryDataset, установила, чтобы они были видимые.
Но само разделение на колонки не отображаются и не отобрадаются их заголовки, и при запуске окна при добавлении строк в грид, появляется строка, но пустая.
Хотя данные, вводимые в нее заведомо не пустые (проверяла при помощи ShowInformationDialog).
Что я сделала не так? И что нужно поправить?
Спасибо
Нравится
На всякий случай привожу код добавления строк в датасет.
function PrepareSelectQueryByID(SelectQueryUSI, ID) { var SelectQuery = Services.GetNewItemByUSI(SelectQueryUSI); ApplySelectQueryFilter(SelectQuery, 'ID', ID, true); DisableAllColumns(SelectQuery.Columns, false, true); for(var i=0; i<OfferingFields.length; ++i) { EnableColumn(SelectQuery.Columns, OfferingFields[i], true); } return SelectQuery.Open(); } function GetSelectedOffering(Sender, Message) { var OfferingID = GetSelectDataResultKeyValue(Sender, Message); if (OfferingID == null) { return; } BaseMemDSGridArea.GridDataset.Open(); BaseMemDSGridArea.GridDataset.DisableEvents(); BaseMemDSGridArea.GridDataset.Append(); BaseMemDSGridArea.GridDataset.Values('ID') = OfferingID; var Dataset = PrepareSelectQueryByID('sq_Offering',OfferingID); Dataset.GotoFirst(); for(var i=0; i<OfferingFields.length; ++i) { var DataField = Dataset.DataFields.ItemsByName(OfferingFields[i]); BaseMemDSGridArea.GridDataset.Values(OfferingFields[i]) = DataField.Value; } Dataset.Close(); BaseMemDSGridArea.GridDataset.Post(); BaseMemDSGridArea.GridDataset.EnableEvents(); RefreshDataset(BaseMemDSGridArea.GridDataset); }
Здравствуйте, Валерия.
MemoryDataset необходимо всегда заполнять на событие OnAfterOpen. А в Вашем случае Вы сначала заполняете данными датасет, а потом вызываете
... RefreshDataset(BaseMemDSGridArea.GridDataset); ...
, при этом данные теряются...
Проблема появилась еще на этапе создания окна.
В редакторе окна не отображается разделение на столбцы и названия столбцов.
Мне не нужно заполнять датасет на событие OnAfterOpen.
У меня он заполняется данными из формы справочника. Она передает ID элемента справочника в форму датасета,
и происходит вставка строки.
"Цыбульникова Валерия" написал:
Мне не нужно заполнять датасет на событие OnAfterOpen.
Для нормального функционирования MemoryDataset в DataGrid заполнять необходимо именно в событии AfterOpen. Попробуйте нажать кнопку refresh в гриде после того как у Вас появяться данные.
Александр, закомментировала строку с RefreshDataset, теперь все работает, как и должно.
Валерия, этого не достаточно, когда у Вас появиться окно выбора данных, и там нажать refresh или сортировку по колонкам, то данные пропадут если Вы их не наполняете в событии OnAfterOpen.