powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Помогите с перебором данных мастер-деталь
1 сообщений из 1, страница 1 из 1
Помогите с перебором данных мастер-деталь
    #36309843
barulya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
У меня имеется три набора данных связанных по связи мастер-деталь последовательно: организации-объекты-здания, соответствующие таблицы данных связаны по определенным ключевым полям.
Данные из этих таблиц размещены в контроле, унаследованном от TreeView согласно их уровню в иерархической структуре. Для связи контролов и данных созданы три bindingsource (назовем их условно А, Б и В) для каждой таблицы данных. Так вот при построении дерева курсор в А установлен на первой записи, в Б и В данные отфильтрованы в соответствии с таблицей А. Если начать перебирать все записи в табл. А и во вложенных циклах данные табл Б и В то, в связи с тем, что А, Б и В связаны с другими контролами, заметно увеличиватся время добавления ветвей дерева.
Подскажите пожалуйста, как отключить контролы от bindingsource для ускорения заполнения дерева? Или может быть можно перебрать строки подчиненных таблиц не меняя позиции соответствующих мастер таблиц.
Вот код, при помощи которого я строю дерево:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
    Public Sub BuildStructure()
        Dim intOrgID, intObjID, intBrID As Integer
        Dim rwOrg, rwObj, rwBR As Object
        Dim i, j, k As Integer
        Dim strOrgName, strObjName, strBRName As String
        Dim pdOrgPDColl, pdObjPDColl, pdBRPDColl As System.ComponentModel.PropertyDescriptorCollection
        Dim newORG, newOBJ, newBR As TreeNode
        Me.BeginUpdate()
        Me.Nodes.Clear()
         pdOrgPDColl = _bsorgcm.GetItemProperties()
        pdObjPDColl = _bsobjcm.GetItemProperties()
        pdBRPDColl = _bsbrcm.GetItemProperties()

        For i =  0  To _bsorgcm.Count -  1 
            _bsorgcm.Position = i
            rwOrg = _bsorgcm.Current
            intOrgID = CType(pdOrgPDColl(_strorgvm).GetValue(rwOrg), Integer)
            strOrgName = CType(pdOrgPDColl(_strorgdm).GetValue(rwOrg), String)
            newORG = New Organization(intOrgID, strOrgName)
            If Not _orgs.ContainsKey("org" & intOrgID) Then _orgs.Add("org" & intOrgID, newORG)
            Me.Nodes.Add(newORG)
            For j =  0  To _bsobjcm.Count -  1 
                _bsobjcm.Position = j
                rwObj = _bsobjcm.Current
                intOrgID = CType(pdObjPDColl(_strobjpm).GetValue(rwObj), Integer)
                intObjID = CType(pdObjPDColl(_strobjvm).GetValue(rwObj), Integer)
                strObjName = CType(pdObjPDColl(_strobjdm).GetValue(rwObj), String)
                newOBJ = New OrgObj(newORG, intObjID, strObjName)
                If Not _orgs.ContainsKey("obj" & intObjID) Then _orgs.Add("obj" & intObjID, newOBJ)
                newORG.Nodes.Add(newOBJ)
                For k =  0  To _bsbrcm.Count -  1 
                    _bsbrcm.Position = k
                    rwBR = _bsbrcm.Current
                    intObjID = CType(pdBRPDColl(_strbrpm).GetValue(rwBR), Integer)
                    intBrID = CType(pdBRPDColl(_strbrvm).GetValue(rwBR), Integer)
                    strBRName = CType(pdBRPDColl(_strbrdm).GetValue(rwBR), String)
                    newBR = New Building(newOBJ, intBrID, strBRName)
                    If Not _orgs.ContainsKey("bld" & intObjID) Then _orgs.Add("bld" & intObjID, newBR)
                    newOBJ.Nodes.Add(newBR)
                Next
            Next
        Next
        Me.EndUpdate()
    End Sub
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Помогите с перебором данных мастер-деталь
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]