DNN Dal + - получить отдельные элементы коллекции информационных классов (vb.NET) - PullRequest
0 голосов
/ 30 декабря 2010

Я не могу найти ответы, которые работают. Вот настройки:

Инфо класс:

Public Class ProductStageInfo

    Private _ProductNumber As String
    Private _ProductReference As String

    Public Sub New()
    End Sub

    Public Property ProductNumber() As String
        Get
            Return _ProductNumber
        End Get
        Set(ByVal Value As String)
            _ProductNumber = Value
        End Set
    End Property

    End Class

и т. Д .; У меня есть четыре объявления класса в информационном классе, у вышеприведенного есть пятнадцать различных элементов - номер продукта, ссылка на продукт, название продукта и так далее. Другие - это каталоги классификации, на какой «стадии» производства находится продукт, вопросы обеспечения качества; и т.д.

Затем в классе Controller для DNN у меня есть эти различные информационные классы, заполненные с помощью запросов к БД, на которых развернут DNN; Пример:

       Public Shared Function LoadStages(ByVal ProductNumber As String) As List(Of ProductStageInfo)
        Return CBO.FillCollection(Of ProductStageInfo)(CType(DataProvider.Instance().ExecuteReader("Product_LoadStages", ProductNumber), IDataReader))
    End Function

и пока все работает, я могу заполнить список данных, используя <% # DataBinder.Eval (Container.DataItem, "ProductNumber"%> и в коде позади:

  Dim ProductStageList As List(Of ProductStageInfo)

            ProductStageList = ProductController.LoadStages(ProductNumber)

            ProductStageDataList.DataSource = ProductStageList
            ProductStageDataList.DataBind()

пока, так хорошо ...

но теперь мне нужно разрешить отдельным лицам «создавать» этапы, и один из бизнес-требований заключается в том, чтобы люди не могли создавать, например, этап доставки до этапа упаковки.

Итак, как мне найти «номер» продукта, ссылку на продукт, номер этапа в коллекции? Я думал, что смогу заполнить коллекцию всеми этапами определенного номера продукта, а затем выполнить if / then stage = 0 found, stage> 5 found и т. Д.

If ProductStageList.Contains(strProductNumber) then

end if

дает значение ошибки типа string не может быть преобразовано в namespace.ProductStageInfo; то же самое для ProductStageList.Find ...

возможно, я просто не понимаю всю коллекцию / индекс / вещь. Все примеры, которые я нашел, касаются одноразмерных коллекций - «как найти имя в этой коллекции», и ответы используют строки для их поиска, но каким-то образом класс Info обрабатывается по-разному, и я не уверен, как перевести это ...

любые советы, подсказки, советы, учебные пособия .... ценим:)

спасибо!

1 Ответ

0 голосов
/ 30 декабря 2010

Я уверен, что только что нашел ответ, просмотрев другой модуль;в основном мне нужно создать пустой объект вместо объекта списка того же класса и использовать два для итерации с помощью for / each и т. д.

        Dim objStages As ProductStagesInfo
        Dim intStages, StageSelected As Integer
        Dim intStageOption As Integer = -1
        Dim blnValid As Boolean = True
        Dim ProductChosen As String = lblStagesCNHeader.Text
        Dim ProductStageList As List(Of ProductStagesInfo) = ProductController.LoadStages(ProductChosenNumber)

        For intStages = 0 To StageList.Count - 1
               objStages = StageList(intStages)
                 intStageOption += 1

                Select objStages.StageSetNumber
                      Case "0"

                Next

objStages. _ обеспечиваетмне возможность получить данные, необходимые для ведения бизнес-логики

<. <</p>

, кажется такой простой, как только ты ее видишь, жаль, что я не могу просто сохранить все это в своем мозгу

ли!

...