JRockFL
asked on
Serialize collecion
I have a collection class that inherits from collectionbase and also implements ComponentModel.IBindingLis t
I'm trying to make this collection serializable by get this message at runtime
Type 'System.ComponentModel.Pro pertyDescr iptor' in Assembly 'System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c56193 4e089' is not marked as serializable.
I tried to add serializabe and nonserializble to all of the propeties from the ibinding list implementation but get this compile error
Attribute 'SerializableAttribute' cannot be applied to 'SortProperty' because the attribute is not valid on this declaration type.
Any ideas?
I'm trying to make this collection serializable by get this message at runtime
Type 'System.ComponentModel.Pro
I tried to add serializabe and nonserializble to all of the propeties from the ibinding list implementation but get this compile error
Attribute 'SerializableAttribute' cannot be applied to 'SortProperty' because the attribute is not valid on this declaration type.
Any ideas?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
thank you for your reply, mine is just about exact except i decorated with the class wth <Serializable()> _
Then I decorated the ibindinglist implementation properties with non serializable attribute
Then I decorated the ibindinglist implementation properties with non serializable attribute
Wouldn't you want those properties to be serialized?
The NonSerialized attribute only applies to field members anyways--it is not valid to decorate a property with NonSerialized.
ASKER
Maybe in the future, but not right now. Oh ok, I didnt know that about the NonSerialized, thank you.
It looks like there must be something else in my code that is causing the problem then.
It looks like there must be something else in my code that is causing the problem then.
Is it possible to post the code for you collection as well as the code where you attempt to serialize it?
ASKER
sure hold on
ASKER
<Serializable()> _
Public Class PurchaseOrderLineItemColle ction
Inherits CollectionBase
Implements ComponentModel.IBindingLis t
#Region "Private Fields"
Private CurrentSortDirection As System.ComponentModel.List SortDirect ion
Private CurrentSortProperty As System.ComponentModel.Prop ertyDescri ptor
Private ApplySecondarySort As Boolean = True
Private _dp As Rockenbach.Data.DataProvid er
#End Region
#Region "Public Properties"
''' <summary>
''' The default readonly property for PurchaseOrderLineItem
''' </summary>
''' <param name="index"></param>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Default Public ReadOnly Property Item(ByVal index As Integer) As Entities.PurchaseOrderLine Item
Get
Return CType(list(index), Entities.PurchaseOrderLine Item)
End Get
End Property
#End Region
#Region "Constructors"
''' <summary>
''' Creates a new instace of the PurchaseOrderLineItem collection
''' </summary>
''' <remarks></remarks>
Public Sub New()
_dp = New Rockenbach.Data.DataProvid er()
End Sub
''' <summary>
''' Creates a new instace of the PurchaseOrderLineItem collection with the provided DataProvider
''' </summary>
''' <param name="dp"></param>
''' <remarks></remarks>
Public Sub New(ByVal dp As Rockenbach.Data.DataProvid er)
_dp = dp
End Sub
#End Region
#Region "Public Methods"
''' <summary>
''' Sorts the collection by property name
''' </summary>
''' <param name="PropertyName"></para m>
''' <param name="Direction"></param>
''' <remarks></remarks>
Public Sub Applysort(ByVal PropertyName As String, ByVal Direction As System.ComponentModel.List SortDirect ion)
Dim pdc As ComponentModel.PropertyDes criptorCol lection = ComponentModel.TypeDescrip tor.GetPro perties(Ge tType(Enti ties.Purch aseOrderLi neItem))
ApplySort(pdc(PropertyName ), Direction)
End Sub
''' <summary>
''' Sorts the collection by property
''' </summary>
''' <param name="property"></param>
''' <param name="direction"></param>
''' <remarks></remarks>
Public Sub ApplySort(ByVal [property] As System.ComponentModel.Prop ertyDescri ptor, ByVal direction As System.ComponentModel.List SortDirect ion) Implements System.ComponentModel.IBin dingList.A pplySort
InnerList.Sort(New Controls.PropertyComparer( [property] , direction))
RaiseEvent ListChanged(Me, New ComponentModel.ListChanged EventArgs( ComponentM odel.ListC hangedType .Reset, -1))
If ApplySecondarySort Then
If Not IsNothing(CurrentSortPrope rty) Then
Dim i As Int16
Dim StartPos As Int16 = 0
Dim pc1 As New Controls.PropertyComparer( [property] , direction)
Dim pc2 As New Controls.PropertyComparer( CurrentSor tProperty, CurrentSortDirection)
For i = 1 To CShort(Me.Count - 1)
If pc1.Compare(Me(i - 1), Me(i)) <> 0 Then
InnerList.Sort(StartPos, i - StartPos, pc2)
StartPos = i
End If
Next
InnerList.Sort(StartPos, Me.Count - StartPos, pc2)
End If
End If
CurrentSortProperty = [property]
CurrentSortDirection = direction
ApplySecondarySort = True
End Sub
''' <summary>
''' Loads a collection of PurchaseOrderLineItem objects
''' </summary>
''' <remarks></remarks>
Public Sub Load()
Dim criteria As Criteria.PurchaseOrderLine ItemCriter ia = Nothing
Load(criteria)
End Sub
''' <summary>
''' Loads a collection of PurchaseOrderLineItem objects based on criteria
''' </summary>
''' <param name="criteria"></param>
''' <remarks></remarks>
Public Sub Load(ByVal criteria As Rockenbach.Data.Criteria)
Dim hsh As New Hashtable()
Dim reader As SqlDataReader
If Not criteria Is Nothing Then
If criteria.Where <> String.Empty Then
hsh.Add("@Where", criteria.Where)
End If
If criteria.OrderBy <> String.Empty Then
hsh.Add("@OrderBy", criteria.OrderBy)
End If
End If
Try
reader = _dp.ExecuteReader("dbo._Pu rchaseOrde rLineItems _Collectio n", hsh)
If Not reader Is Nothing And Not reader.IsClosed Then
While reader.Read()
Dim objPurchaseOrderLineItem As New Entities.PurchaseOrderLine Item
If Not reader.IsDBNull(0) Then
objPurchaseOrderLineItem.P urchaseOrd erLineItem ID = reader.GetInt32(0)
End If
If Not reader.IsDBNull(1) Then
objPurchaseOrderLineItem.P urchaseOrd erID = reader.GetInt32(1)
End If
If Not reader.IsDBNull(2) Then
objPurchaseOrderLineItem.I tem = reader.GetString(2)
End If
If Not reader.IsDBNull(3) Then
objPurchaseOrderLineItem.D escription = reader.GetString(3)
End If
If Not reader.IsDBNull(4) Then
objPurchaseOrderLineItem.Q uantity = reader.GetInt32(4)
End If
If Not reader.IsDBNull(5) Then
objPurchaseOrderLineItem.P rice = reader.GetDecimal(5)
End If
If Not reader.IsDBNull(6) Then
objPurchaseOrderLineItem.C reatedDate = reader.GetDateTime(6)
End If
If Not reader.IsDBNull(7) Then
objPurchaseOrderLineItem.C reatedBy = reader.GetString(7)
End If
If Not reader.IsDBNull(8) Then
objPurchaseOrderLineItem.M odifiedDat e = reader.GetDateTime(8)
End If
If Not reader.IsDBNull(9) Then
objPurchaseOrderLineItem.M odifiedBy = reader.GetString(9)
End If
List.Add(objPurchaseOrderL ineItem)
objPurchaseOrderLineItem = Nothing
End While
reader.Close()
End If
Catch ex As Exception
Throw ex
End Try
End Sub
''' <summary>
''' Loads a collection of PurchaseOrderLineItem objects based on PurchaseOrderLineItemcrite ria object
''' </summary>
''' <param name="criteria"></param>
''' <remarks></remarks>
Public Sub Load(ByVal criteria As Criteria.PurchaseOrderLine ItemCriter ia)
Dim hsh As New Hashtable()
Dim reader As SqlDataReader
Dim sb As New StringBuilder()
Dim whereUsed As Boolean
Dim i as Integer = 1
Dim j as Integer = 1
If Not criteria Is Nothing Then
If criteria.PurchaseOrderLine ItemIDIncl udeList.Co unt > 0 Then
Dim purchaseOrderLineItemID As System.Int32
If Not whereUsed Then
sb.Append(" WHERE PurchaseOrderLineItemID IN (")
whereUsed = True
Else
sb.Append(" AND PurchaseOrderLineItemID IN (")
End If
For Each PurchaseOrderLineItemID In criteria.PurchaseOrderLine ItemIDIncl udeList
sb.Append("'")
sb.Append(PurchaseOrderLin eItemID)
sb.Append("'")
If i < criteria.PurchaseOrderLine ItemIDIncl udeList.Co unt Then
sb.Append(", ")
End If
i +=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
If criteria.PurchaseOrderLine ItemIDExcl udeList.Co unt > 0 Then
Dim purchaseOrderLineItemID As System.Int32
If Not whereUsed Then
sb.Append(" WHERE PurchaseOrderLineItemID NOT IN (")
whereUsed = True
Else
sb.Append(" AND PurchaseOrderLineItemID NOT IN (")
End If
For Each PurchaseOrderLineItemID In criteria.PurchaseOrderLine ItemIDExcl udeList
sb.Append("'")
sb.Append(PurchaseOrderLin eItemID)
sb.Append("'")
If j < criteria.PurchaseOrderLine ItemIDExcl udeList.Co unt Then
sb.Append(", ")
End If
j+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
End If
i = 1
j = 1
If Not criteria Is Nothing Then
If criteria.PurchaseOrderIDIn cludeList. Count > 0 Then
Dim purchaseOrderID As System.Int32
If whereUsed Then
sb.Append(" AND PurchaseOrderID IN (")
Else
sb.Append(" WHERE PurchaseOrderID IN (")
whereUsed = True
End If
For Each PurchaseOrderID In criteria.PurchaseOrderIDIn cludeList
sb.Append("'")
sb.Append(PurchaseOrderID)
sb.Append("'")
If i < criteria.PurchaseOrderIDIn cludeList. Count Then
sb.Append(", ")
End If
i+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
If criteria.PurchaseOrderIDEx cludeList. Count > 0 Then
Dim purchaseOrderID As System.Nullable(Of System.Int32)
If whereUsed Then
sb.Append(" AND PurchaseOrderID NOT IN (")
Else
sb.Append(" WHERE PurchaseOrderID NOT IN (")
whereUsed = True
End If
For Each PurchaseOrderID In criteria.PurchaseOrderIDEx cludeList
sb.Append("'")
sb.Append(PurchaseOrderID)
sb.Append("'")
If j < criteria.PurchaseOrderIDEx cludeList. Count Then
sb.Append(", ")
End If
j+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
End If
If Not criteria Is Nothing Then
If criteria.ItemIncludeList.C ount > 0 Then
Dim item As System.String
If whereUsed Then
sb.Append(" AND Item IN (")
Else
sb.Append(" WHERE Item IN (")
whereUsed = True
End If
For Each Item In criteria.ItemIncludeList
sb.Append("'")
sb.Append(Item)
sb.Append("'")
If i < criteria.ItemIncludeList.C ount Then
sb.Append(", ")
End If
i+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
If criteria.ItemExcludeList.C ount > 0 Then
Dim item As System.String
If whereUsed Then
sb.Append(" AND Item NOT IN (")
Else
sb.Append(" WHERE Item NOT IN (")
whereUsed = True
End If
For Each Item In criteria.ItemExcludeList
sb.Append("'")
sb.Append(Item)
sb.Append("'")
If j < criteria.ItemExcludeList.C ount Then
sb.Append(", ")
End If
j+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
End If
If Not criteria Is Nothing Then
If criteria.DescriptionInclud eList.Coun t > 0 Then
Dim description As System.String
If whereUsed Then
sb.Append(" AND Description IN (")
Else
sb.Append(" WHERE Description IN (")
whereUsed = True
End If
For Each Description In criteria.DescriptionInclud eList
sb.Append("'")
sb.Append(Description)
sb.Append("'")
If i < criteria.DescriptionInclud eList.Coun t Then
sb.Append(", ")
End If
i+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
If criteria.DescriptionExclud eList.Coun t > 0 Then
Dim description As System.String
If whereUsed Then
sb.Append(" AND Description NOT IN (")
Else
sb.Append(" WHERE Description NOT IN (")
whereUsed = True
End If
For Each Description In criteria.DescriptionExclud eList
sb.Append("'")
sb.Append(Description)
sb.Append("'")
If j < criteria.DescriptionExclud eList.Coun t Then
sb.Append(", ")
End If
j+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
End If
If Not criteria Is Nothing Then
If criteria.QuantityIncludeLi st.Count > 0 Then
Dim quantity As System.Int32
If whereUsed Then
sb.Append(" AND Quantity IN (")
Else
sb.Append(" WHERE Quantity IN (")
whereUsed = True
End If
For Each Quantity In criteria.QuantityIncludeLi st
sb.Append("'")
sb.Append(Quantity)
sb.Append("'")
If i < criteria.QuantityIncludeLi st.Count Then
sb.Append(", ")
End If
i+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
If criteria.QuantityExcludeLi st.Count > 0 Then
Dim quantity As System.Nullable(Of System.Int32)
If whereUsed Then
sb.Append(" AND Quantity NOT IN (")
Else
sb.Append(" WHERE Quantity NOT IN (")
whereUsed = True
End If
For Each Quantity In criteria.QuantityExcludeLi st
sb.Append("'")
sb.Append(Quantity)
sb.Append("'")
If j < criteria.QuantityExcludeLi st.Count Then
sb.Append(", ")
End If
j+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
End If
If Not criteria Is Nothing Then
If criteria.PriceIncludeList. Count > 0 Then
Dim price As System.Decimal
If whereUsed Then
sb.Append(" AND Price IN (")
Else
sb.Append(" WHERE Price IN (")
whereUsed = True
End If
For Each Price In criteria.PriceIncludeList
sb.Append("'")
sb.Append(Price)
sb.Append("'")
If i < criteria.PriceIncludeList. Count Then
sb.Append(", ")
End If
i+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
If criteria.PriceExcludeList. Count > 0 Then
Dim price As System.Nullable(Of System.Decimal)
If whereUsed Then
sb.Append(" AND Price NOT IN (")
Else
sb.Append(" WHERE Price NOT IN (")
whereUsed = True
End If
For Each Price In criteria.PriceExcludeList
sb.Append("'")
sb.Append(Price)
sb.Append("'")
If j < criteria.PriceExcludeList. Count Then
sb.Append(", ")
End If
j+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
End If
If Not criteria Is Nothing Then
If criteria.CreatedDateInclud eList.Coun t > 0 Then
Dim createdDate As System.DateTime
If whereUsed Then
sb.Append(" AND CreatedDate IN (")
Else
sb.Append(" WHERE CreatedDate IN (")
whereUsed = True
End If
For Each CreatedDate In criteria.CreatedDateInclud eList
sb.Append("'")
sb.Append(CreatedDate)
sb.Append("'")
If i < criteria.CreatedDateInclud eList.Coun t Then
sb.Append(", ")
End If
i+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
If criteria.CreatedDateExclud eList.Coun t > 0 Then
Dim createdDate As System.DateTime
If whereUsed Then
sb.Append(" AND CreatedDate NOT IN (")
Else
sb.Append(" WHERE CreatedDate NOT IN (")
whereUsed = True
End If
For Each CreatedDate In criteria.CreatedDateExclud eList
sb.Append("'")
sb.Append(CreatedDate)
sb.Append("'")
If j < criteria.CreatedDateExclud eList.Coun t Then
sb.Append(", ")
End If
j+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
End If
If Not criteria Is Nothing Then
If criteria.CreatedByIncludeL ist.Count > 0 Then
Dim createdBy As System.String
If whereUsed Then
sb.Append(" AND CreatedBy IN (")
Else
sb.Append(" WHERE CreatedBy IN (")
whereUsed = True
End If
For Each CreatedBy In criteria.CreatedByIncludeL ist
sb.Append("'")
sb.Append(CreatedBy)
sb.Append("'")
If i < criteria.CreatedByIncludeL ist.Count Then
sb.Append(", ")
End If
i+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
If criteria.CreatedByExcludeL ist.Count > 0 Then
Dim createdBy As System.String
If whereUsed Then
sb.Append(" AND CreatedBy NOT IN (")
Else
sb.Append(" WHERE CreatedBy NOT IN (")
whereUsed = True
End If
For Each CreatedBy In criteria.CreatedByExcludeL ist
sb.Append("'")
sb.Append(CreatedBy)
sb.Append("'")
If j < criteria.CreatedByExcludeL ist.Count Then
sb.Append(", ")
End If
j+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
End If
If Not criteria Is Nothing Then
If criteria.ModifiedDateInclu deList.Cou nt > 0 Then
Dim modifiedDate As System.DateTime
If whereUsed Then
sb.Append(" AND ModifiedDate IN (")
Else
sb.Append(" WHERE ModifiedDate IN (")
whereUsed = True
End If
For Each ModifiedDate In criteria.ModifiedDateInclu deList
sb.Append("'")
sb.Append(ModifiedDate)
sb.Append("'")
If i < criteria.ModifiedDateInclu deList.Cou nt Then
sb.Append(", ")
End If
i+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
If criteria.ModifiedDateExclu deList.Cou nt > 0 Then
Dim modifiedDate As System.Nullable(Of System.DateTime)
If whereUsed Then
sb.Append(" AND ModifiedDate NOT IN (")
Else
sb.Append(" WHERE ModifiedDate NOT IN (")
whereUsed = True
End If
For Each ModifiedDate In criteria.ModifiedDateExclu deList
sb.Append("'")
sb.Append(ModifiedDate)
sb.Append("'")
If j < criteria.ModifiedDateExclu deList.Cou nt Then
sb.Append(", ")
End If
j+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
End If
If Not criteria Is Nothing Then
If criteria.ModifiedByInclude List.Count > 0 Then
Dim modifiedBy As System.String
If whereUsed Then
sb.Append(" AND ModifiedBy IN (")
Else
sb.Append(" WHERE ModifiedBy IN (")
whereUsed = True
End If
For Each ModifiedBy In criteria.ModifiedByInclude List
sb.Append("'")
sb.Append(ModifiedBy)
sb.Append("'")
If i < criteria.ModifiedByInclude List.Count Then
sb.Append(", ")
End If
i+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
If criteria.ModifiedByExclude List.Count > 0 Then
Dim modifiedBy As System.String
If whereUsed Then
sb.Append(" AND ModifiedBy NOT IN (")
Else
sb.Append(" WHERE ModifiedBy NOT IN (")
whereUsed = True
End If
For Each ModifiedBy In criteria.ModifiedByExclude List
sb.Append("'")
sb.Append(ModifiedBy)
sb.Append("'")
If j < criteria.ModifiedByExclude List.Count Then
sb.Append(", ")
End If
j+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
End If
If sb.Length > 0 Then
hsh.Add("@Where", sb.ToString())
End If
Try
reader = _dp.ExecuteReader("dbo._Pu rchaseOrde rLineItems _Collectio n", hsh)
If Not reader Is Nothing And Not reader.IsClosed Then
While reader.Read()
Dim objPurchaseOrderLineItem As New Entities.PurchaseOrderLine Item
If Not reader.IsDBNull(0) Then
objPurchaseOrderLineItem.P urchaseOrd erLineItem ID = reader.GetInt32(0)
End If
If Not reader.IsDBNull(1) Then
objPurchaseOrderLineItem.P urchaseOrd erID = reader.GetInt32(1)
End If
If Not reader.IsDBNull(2) Then
objPurchaseOrderLineItem.I tem = reader.GetString(2)
End If
If Not reader.IsDBNull(3) Then
objPurchaseOrderLineItem.D escription = reader.GetString(3)
End If
If Not reader.IsDBNull(4) Then
objPurchaseOrderLineItem.Q uantity = reader.GetInt32(4)
End If
If Not reader.IsDBNull(5) Then
objPurchaseOrderLineItem.P rice = reader.GetDecimal(5)
End If
If Not reader.IsDBNull(6) Then
objPurchaseOrderLineItem.C reatedDate = reader.GetDateTime(6)
End If
If Not reader.IsDBNull(7) Then
objPurchaseOrderLineItem.C reatedBy = reader.GetString(7)
End If
If Not reader.IsDBNull(8) Then
objPurchaseOrderLineItem.M odifiedDat e = reader.GetDateTime(8)
End If
If Not reader.IsDBNull(9) Then
objPurchaseOrderLineItem.M odifiedBy = reader.GetString(9)
End If
List.Add(objPurchaseOrderL ineItem)
objPurchaseOrderLineItem = Nothing
End While
reader.Close()
End If
Catch ex As Exception
Throw ex
End Try
End Sub
''' <summary>
''' Adds a PurchaseOrderLineItem object to the PurchaseOrderLineItemColle ction
''' </summary>
''' <param name="PurchaseOrderLineIte m"></param >
''' <remarks></remarks>
Public Sub Add(ByVal PurchaseOrderLineItem As Entities.PurchaseOrderLine Item)
list.Add(PurchaseOrderLine Item)
End Sub
''' <summary>
''' Removes a PurchaseOrderLineItem object from the PurchaseOrderLineItemColle ction
''' </summary>
''' <param name="PurchaseOrderLineIte m"></param >
''' <remarks></remarks>
Public Sub Remove(ByVal PurchaseOrderLineItem As Entities.PurchaseOrderLine Item)
list.Remove(PurchaseOrderL ineItem)
End Sub
''' <summary>
''' Returns the a datatable of the PurchaseOrderLineItem collection
''' </summary>
''' <returns></returns>
''' <remarks></remarks>
Public Overridable Function ToDataTable() As DataTable
Dim PurchaseOrderLineItem As New Entities.PurchaseOrderLine Item
Dim t As Type = PurchaseOrderLineItem.GetT ype()
Dim pis() As System.Reflection.Property Info = t.GetProperties()
Dim dt As New DataTable
For i As Integer = 0 To pis.Length - 1
Dim pi As System.Reflection.Property Info = CType(pis.GetValue(i), System.Reflection.Property Info)
dt.Columns.Add(pi.Name)
Next
For Each PurchaseOrderLineItem In Me.List
Dim row As DataRow = dt.NewRow()
For i As Integer = 0 To pis.Length - 1
Dim pi As System.Reflection.Property Info = CType(pis.GetValue(i), System.Reflection.Property Info)
row(i) = pi.GetValue(PurchaseOrderL ineItem, Nothing)
Next
dt.Rows.Add(row)
Next
Return dt
End Function
#End Region
#Region "ComponentModel.IBindingLi st Implementation"
Public Sub AddIndex(ByVal [property] As System.ComponentModel.Prop ertyDescri ptor) Implements System.ComponentModel.IBin dingList.A ddIndex
Throw New System.NotImplementedExcep tion
End Sub
Public Function AddNew() As Object Implements System.ComponentModel.IBin dingList.A ddNew
Throw New System.NotImplementedExcep tion
End Function
Public ReadOnly Property AllowEdit() As Boolean Implements System.ComponentModel.IBin dingList.A llowEdit
Get
Throw New System.NotImplementedExcep tion
End Get
End Property
Public ReadOnly Property AllowNew() As Boolean Implements System.ComponentModel.IBin dingList.A llowNew
Get
Throw New System.NotImplementedExcep tion
End Get
End Property
Public ReadOnly Property AllowRemove() As Boolean Implements System.ComponentModel.IBin dingList.A llowRemove
Get
Throw New System.NotImplementedExcep tion
End Get
End Property
Public Function Find(ByVal [property] As System.ComponentModel.Prop ertyDescri ptor, ByVal key As Object) As Integer Implements System.ComponentModel.IBin dingList.F ind
Throw New System.NotImplementedExcep tion
End Function
Public ReadOnly Property IsSorted() As Boolean Implements System.ComponentModel.IBin dingList.I sSorted
Get
Throw New System.NotImplementedExcep tion
End Get
End Property
Public Event ListChanged(ByVal sender As Object, ByVal e As System.ComponentModel.List ChangedEve ntArgs) Implements System.ComponentModel.IBin dingList.L istChanged
Public Sub RemoveIndex(ByVal [property] As System.ComponentModel.Prop ertyDescri ptor) Implements System.ComponentModel.IBin dingList.R emoveIndex
Throw New System.NotImplementedExcep tion
End Sub
Public Sub RemoveSort() Implements System.ComponentModel.IBin dingList.R emoveSort
Throw New System.NotImplementedExcep tion
End Sub
Public ReadOnly Property SortDirection() As System.ComponentModel.List SortDirect ion Implements System.ComponentModel.IBin dingList.S ortDirecti on
Get
Throw New System.NotImplementedExcep tion
End Get
End Property
Public ReadOnly Property SortProperty() As System.ComponentModel.Prop ertyDescri ptor Implements System.ComponentModel.IBin dingList.S ortPropert y
Get
Throw New System.NotImplementedExcep tion
End Get
End Property
Public ReadOnly Property SupportsChangeNotification () As Boolean Implements System.ComponentModel.IBin dingList.S upportsCha ngeNotific ation
Get
Throw New System.NotImplementedExcep tion
End Get
End Property
Public ReadOnly Property SupportsSearching() As Boolean Implements System.ComponentModel.IBin dingList.S upportsSea rching
Get
Throw New System.NotImplementedExcep tion
End Get
End Property
Public ReadOnly Property SupportsSorting() As Boolean Implements System.ComponentModel.IBin dingList.S upportsSor ting
Get
Throw New System.NotImplementedExcep tion
End Get
End Property
#End Region
End Class
Public Class PurchaseOrderLineItemColle
Inherits CollectionBase
Implements ComponentModel.IBindingLis
#Region "Private Fields"
Private CurrentSortDirection As System.ComponentModel.List
Private CurrentSortProperty As System.ComponentModel.Prop
Private ApplySecondarySort As Boolean = True
Private _dp As Rockenbach.Data.DataProvid
#End Region
#Region "Public Properties"
''' <summary>
''' The default readonly property for PurchaseOrderLineItem
''' </summary>
''' <param name="index"></param>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
Default Public ReadOnly Property Item(ByVal index As Integer) As Entities.PurchaseOrderLine
Get
Return CType(list(index), Entities.PurchaseOrderLine
End Get
End Property
#End Region
#Region "Constructors"
''' <summary>
''' Creates a new instace of the PurchaseOrderLineItem collection
''' </summary>
''' <remarks></remarks>
Public Sub New()
_dp = New Rockenbach.Data.DataProvid
End Sub
''' <summary>
''' Creates a new instace of the PurchaseOrderLineItem collection with the provided DataProvider
''' </summary>
''' <param name="dp"></param>
''' <remarks></remarks>
Public Sub New(ByVal dp As Rockenbach.Data.DataProvid
_dp = dp
End Sub
#End Region
#Region "Public Methods"
''' <summary>
''' Sorts the collection by property name
''' </summary>
''' <param name="PropertyName"></para
''' <param name="Direction"></param>
''' <remarks></remarks>
Public Sub Applysort(ByVal PropertyName As String, ByVal Direction As System.ComponentModel.List
Dim pdc As ComponentModel.PropertyDes
ApplySort(pdc(PropertyName
End Sub
''' <summary>
''' Sorts the collection by property
''' </summary>
''' <param name="property"></param>
''' <param name="direction"></param>
''' <remarks></remarks>
Public Sub ApplySort(ByVal [property] As System.ComponentModel.Prop
InnerList.Sort(New Controls.PropertyComparer(
RaiseEvent ListChanged(Me, New ComponentModel.ListChanged
If ApplySecondarySort Then
If Not IsNothing(CurrentSortPrope
Dim i As Int16
Dim StartPos As Int16 = 0
Dim pc1 As New Controls.PropertyComparer(
Dim pc2 As New Controls.PropertyComparer(
For i = 1 To CShort(Me.Count - 1)
If pc1.Compare(Me(i - 1), Me(i)) <> 0 Then
InnerList.Sort(StartPos, i - StartPos, pc2)
StartPos = i
End If
Next
InnerList.Sort(StartPos, Me.Count - StartPos, pc2)
End If
End If
CurrentSortProperty = [property]
CurrentSortDirection = direction
ApplySecondarySort = True
End Sub
''' <summary>
''' Loads a collection of PurchaseOrderLineItem objects
''' </summary>
''' <remarks></remarks>
Public Sub Load()
Dim criteria As Criteria.PurchaseOrderLine
Load(criteria)
End Sub
''' <summary>
''' Loads a collection of PurchaseOrderLineItem objects based on criteria
''' </summary>
''' <param name="criteria"></param>
''' <remarks></remarks>
Public Sub Load(ByVal criteria As Rockenbach.Data.Criteria)
Dim hsh As New Hashtable()
Dim reader As SqlDataReader
If Not criteria Is Nothing Then
If criteria.Where <> String.Empty Then
hsh.Add("@Where", criteria.Where)
End If
If criteria.OrderBy <> String.Empty Then
hsh.Add("@OrderBy", criteria.OrderBy)
End If
End If
Try
reader = _dp.ExecuteReader("dbo._Pu
If Not reader Is Nothing And Not reader.IsClosed Then
While reader.Read()
Dim objPurchaseOrderLineItem As New Entities.PurchaseOrderLine
If Not reader.IsDBNull(0) Then
objPurchaseOrderLineItem.P
End If
If Not reader.IsDBNull(1) Then
objPurchaseOrderLineItem.P
End If
If Not reader.IsDBNull(2) Then
objPurchaseOrderLineItem.I
End If
If Not reader.IsDBNull(3) Then
objPurchaseOrderLineItem.D
End If
If Not reader.IsDBNull(4) Then
objPurchaseOrderLineItem.Q
End If
If Not reader.IsDBNull(5) Then
objPurchaseOrderLineItem.P
End If
If Not reader.IsDBNull(6) Then
objPurchaseOrderLineItem.C
End If
If Not reader.IsDBNull(7) Then
objPurchaseOrderLineItem.C
End If
If Not reader.IsDBNull(8) Then
objPurchaseOrderLineItem.M
End If
If Not reader.IsDBNull(9) Then
objPurchaseOrderLineItem.M
End If
List.Add(objPurchaseOrderL
objPurchaseOrderLineItem = Nothing
End While
reader.Close()
End If
Catch ex As Exception
Throw ex
End Try
End Sub
''' <summary>
''' Loads a collection of PurchaseOrderLineItem objects based on PurchaseOrderLineItemcrite
''' </summary>
''' <param name="criteria"></param>
''' <remarks></remarks>
Public Sub Load(ByVal criteria As Criteria.PurchaseOrderLine
Dim hsh As New Hashtable()
Dim reader As SqlDataReader
Dim sb As New StringBuilder()
Dim whereUsed As Boolean
Dim i as Integer = 1
Dim j as Integer = 1
If Not criteria Is Nothing Then
If criteria.PurchaseOrderLine
Dim purchaseOrderLineItemID As System.Int32
If Not whereUsed Then
sb.Append(" WHERE PurchaseOrderLineItemID IN (")
whereUsed = True
Else
sb.Append(" AND PurchaseOrderLineItemID IN (")
End If
For Each PurchaseOrderLineItemID In criteria.PurchaseOrderLine
sb.Append("'")
sb.Append(PurchaseOrderLin
sb.Append("'")
If i < criteria.PurchaseOrderLine
sb.Append(", ")
End If
i +=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
If criteria.PurchaseOrderLine
Dim purchaseOrderLineItemID As System.Int32
If Not whereUsed Then
sb.Append(" WHERE PurchaseOrderLineItemID NOT IN (")
whereUsed = True
Else
sb.Append(" AND PurchaseOrderLineItemID NOT IN (")
End If
For Each PurchaseOrderLineItemID In criteria.PurchaseOrderLine
sb.Append("'")
sb.Append(PurchaseOrderLin
sb.Append("'")
If j < criteria.PurchaseOrderLine
sb.Append(", ")
End If
j+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
End If
i = 1
j = 1
If Not criteria Is Nothing Then
If criteria.PurchaseOrderIDIn
Dim purchaseOrderID As System.Int32
If whereUsed Then
sb.Append(" AND PurchaseOrderID IN (")
Else
sb.Append(" WHERE PurchaseOrderID IN (")
whereUsed = True
End If
For Each PurchaseOrderID In criteria.PurchaseOrderIDIn
sb.Append("'")
sb.Append(PurchaseOrderID)
sb.Append("'")
If i < criteria.PurchaseOrderIDIn
sb.Append(", ")
End If
i+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
If criteria.PurchaseOrderIDEx
Dim purchaseOrderID As System.Nullable(Of System.Int32)
If whereUsed Then
sb.Append(" AND PurchaseOrderID NOT IN (")
Else
sb.Append(" WHERE PurchaseOrderID NOT IN (")
whereUsed = True
End If
For Each PurchaseOrderID In criteria.PurchaseOrderIDEx
sb.Append("'")
sb.Append(PurchaseOrderID)
sb.Append("'")
If j < criteria.PurchaseOrderIDEx
sb.Append(", ")
End If
j+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
End If
If Not criteria Is Nothing Then
If criteria.ItemIncludeList.C
Dim item As System.String
If whereUsed Then
sb.Append(" AND Item IN (")
Else
sb.Append(" WHERE Item IN (")
whereUsed = True
End If
For Each Item In criteria.ItemIncludeList
sb.Append("'")
sb.Append(Item)
sb.Append("'")
If i < criteria.ItemIncludeList.C
sb.Append(", ")
End If
i+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
If criteria.ItemExcludeList.C
Dim item As System.String
If whereUsed Then
sb.Append(" AND Item NOT IN (")
Else
sb.Append(" WHERE Item NOT IN (")
whereUsed = True
End If
For Each Item In criteria.ItemExcludeList
sb.Append("'")
sb.Append(Item)
sb.Append("'")
If j < criteria.ItemExcludeList.C
sb.Append(", ")
End If
j+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
End If
If Not criteria Is Nothing Then
If criteria.DescriptionInclud
Dim description As System.String
If whereUsed Then
sb.Append(" AND Description IN (")
Else
sb.Append(" WHERE Description IN (")
whereUsed = True
End If
For Each Description In criteria.DescriptionInclud
sb.Append("'")
sb.Append(Description)
sb.Append("'")
If i < criteria.DescriptionInclud
sb.Append(", ")
End If
i+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
If criteria.DescriptionExclud
Dim description As System.String
If whereUsed Then
sb.Append(" AND Description NOT IN (")
Else
sb.Append(" WHERE Description NOT IN (")
whereUsed = True
End If
For Each Description In criteria.DescriptionExclud
sb.Append("'")
sb.Append(Description)
sb.Append("'")
If j < criteria.DescriptionExclud
sb.Append(", ")
End If
j+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
End If
If Not criteria Is Nothing Then
If criteria.QuantityIncludeLi
Dim quantity As System.Int32
If whereUsed Then
sb.Append(" AND Quantity IN (")
Else
sb.Append(" WHERE Quantity IN (")
whereUsed = True
End If
For Each Quantity In criteria.QuantityIncludeLi
sb.Append("'")
sb.Append(Quantity)
sb.Append("'")
If i < criteria.QuantityIncludeLi
sb.Append(", ")
End If
i+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
If criteria.QuantityExcludeLi
Dim quantity As System.Nullable(Of System.Int32)
If whereUsed Then
sb.Append(" AND Quantity NOT IN (")
Else
sb.Append(" WHERE Quantity NOT IN (")
whereUsed = True
End If
For Each Quantity In criteria.QuantityExcludeLi
sb.Append("'")
sb.Append(Quantity)
sb.Append("'")
If j < criteria.QuantityExcludeLi
sb.Append(", ")
End If
j+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
End If
If Not criteria Is Nothing Then
If criteria.PriceIncludeList.
Dim price As System.Decimal
If whereUsed Then
sb.Append(" AND Price IN (")
Else
sb.Append(" WHERE Price IN (")
whereUsed = True
End If
For Each Price In criteria.PriceIncludeList
sb.Append("'")
sb.Append(Price)
sb.Append("'")
If i < criteria.PriceIncludeList.
sb.Append(", ")
End If
i+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
If criteria.PriceExcludeList.
Dim price As System.Nullable(Of System.Decimal)
If whereUsed Then
sb.Append(" AND Price NOT IN (")
Else
sb.Append(" WHERE Price NOT IN (")
whereUsed = True
End If
For Each Price In criteria.PriceExcludeList
sb.Append("'")
sb.Append(Price)
sb.Append("'")
If j < criteria.PriceExcludeList.
sb.Append(", ")
End If
j+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
End If
If Not criteria Is Nothing Then
If criteria.CreatedDateInclud
Dim createdDate As System.DateTime
If whereUsed Then
sb.Append(" AND CreatedDate IN (")
Else
sb.Append(" WHERE CreatedDate IN (")
whereUsed = True
End If
For Each CreatedDate In criteria.CreatedDateInclud
sb.Append("'")
sb.Append(CreatedDate)
sb.Append("'")
If i < criteria.CreatedDateInclud
sb.Append(", ")
End If
i+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
If criteria.CreatedDateExclud
Dim createdDate As System.DateTime
If whereUsed Then
sb.Append(" AND CreatedDate NOT IN (")
Else
sb.Append(" WHERE CreatedDate NOT IN (")
whereUsed = True
End If
For Each CreatedDate In criteria.CreatedDateExclud
sb.Append("'")
sb.Append(CreatedDate)
sb.Append("'")
If j < criteria.CreatedDateExclud
sb.Append(", ")
End If
j+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
End If
If Not criteria Is Nothing Then
If criteria.CreatedByIncludeL
Dim createdBy As System.String
If whereUsed Then
sb.Append(" AND CreatedBy IN (")
Else
sb.Append(" WHERE CreatedBy IN (")
whereUsed = True
End If
For Each CreatedBy In criteria.CreatedByIncludeL
sb.Append("'")
sb.Append(CreatedBy)
sb.Append("'")
If i < criteria.CreatedByIncludeL
sb.Append(", ")
End If
i+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
If criteria.CreatedByExcludeL
Dim createdBy As System.String
If whereUsed Then
sb.Append(" AND CreatedBy NOT IN (")
Else
sb.Append(" WHERE CreatedBy NOT IN (")
whereUsed = True
End If
For Each CreatedBy In criteria.CreatedByExcludeL
sb.Append("'")
sb.Append(CreatedBy)
sb.Append("'")
If j < criteria.CreatedByExcludeL
sb.Append(", ")
End If
j+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
End If
If Not criteria Is Nothing Then
If criteria.ModifiedDateInclu
Dim modifiedDate As System.DateTime
If whereUsed Then
sb.Append(" AND ModifiedDate IN (")
Else
sb.Append(" WHERE ModifiedDate IN (")
whereUsed = True
End If
For Each ModifiedDate In criteria.ModifiedDateInclu
sb.Append("'")
sb.Append(ModifiedDate)
sb.Append("'")
If i < criteria.ModifiedDateInclu
sb.Append(", ")
End If
i+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
If criteria.ModifiedDateExclu
Dim modifiedDate As System.Nullable(Of System.DateTime)
If whereUsed Then
sb.Append(" AND ModifiedDate NOT IN (")
Else
sb.Append(" WHERE ModifiedDate NOT IN (")
whereUsed = True
End If
For Each ModifiedDate In criteria.ModifiedDateExclu
sb.Append("'")
sb.Append(ModifiedDate)
sb.Append("'")
If j < criteria.ModifiedDateExclu
sb.Append(", ")
End If
j+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
End If
If Not criteria Is Nothing Then
If criteria.ModifiedByInclude
Dim modifiedBy As System.String
If whereUsed Then
sb.Append(" AND ModifiedBy IN (")
Else
sb.Append(" WHERE ModifiedBy IN (")
whereUsed = True
End If
For Each ModifiedBy In criteria.ModifiedByInclude
sb.Append("'")
sb.Append(ModifiedBy)
sb.Append("'")
If i < criteria.ModifiedByInclude
sb.Append(", ")
End If
i+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
If criteria.ModifiedByExclude
Dim modifiedBy As System.String
If whereUsed Then
sb.Append(" AND ModifiedBy NOT IN (")
Else
sb.Append(" WHERE ModifiedBy NOT IN (")
whereUsed = True
End If
For Each ModifiedBy In criteria.ModifiedByExclude
sb.Append("'")
sb.Append(ModifiedBy)
sb.Append("'")
If j < criteria.ModifiedByExclude
sb.Append(", ")
End If
j+=1
Next
If whereUsed Then
sb.Append(")")
End If
End If
End If
If sb.Length > 0 Then
hsh.Add("@Where", sb.ToString())
End If
Try
reader = _dp.ExecuteReader("dbo._Pu
If Not reader Is Nothing And Not reader.IsClosed Then
While reader.Read()
Dim objPurchaseOrderLineItem As New Entities.PurchaseOrderLine
If Not reader.IsDBNull(0) Then
objPurchaseOrderLineItem.P
End If
If Not reader.IsDBNull(1) Then
objPurchaseOrderLineItem.P
End If
If Not reader.IsDBNull(2) Then
objPurchaseOrderLineItem.I
End If
If Not reader.IsDBNull(3) Then
objPurchaseOrderLineItem.D
End If
If Not reader.IsDBNull(4) Then
objPurchaseOrderLineItem.Q
End If
If Not reader.IsDBNull(5) Then
objPurchaseOrderLineItem.P
End If
If Not reader.IsDBNull(6) Then
objPurchaseOrderLineItem.C
End If
If Not reader.IsDBNull(7) Then
objPurchaseOrderLineItem.C
End If
If Not reader.IsDBNull(8) Then
objPurchaseOrderLineItem.M
End If
If Not reader.IsDBNull(9) Then
objPurchaseOrderLineItem.M
End If
List.Add(objPurchaseOrderL
objPurchaseOrderLineItem = Nothing
End While
reader.Close()
End If
Catch ex As Exception
Throw ex
End Try
End Sub
''' <summary>
''' Adds a PurchaseOrderLineItem object to the PurchaseOrderLineItemColle
''' </summary>
''' <param name="PurchaseOrderLineIte
''' <remarks></remarks>
Public Sub Add(ByVal PurchaseOrderLineItem As Entities.PurchaseOrderLine
list.Add(PurchaseOrderLine
End Sub
''' <summary>
''' Removes a PurchaseOrderLineItem object from the PurchaseOrderLineItemColle
''' </summary>
''' <param name="PurchaseOrderLineIte
''' <remarks></remarks>
Public Sub Remove(ByVal PurchaseOrderLineItem As Entities.PurchaseOrderLine
list.Remove(PurchaseOrderL
End Sub
''' <summary>
''' Returns the a datatable of the PurchaseOrderLineItem collection
''' </summary>
''' <returns></returns>
''' <remarks></remarks>
Public Overridable Function ToDataTable() As DataTable
Dim PurchaseOrderLineItem As New Entities.PurchaseOrderLine
Dim t As Type = PurchaseOrderLineItem.GetT
Dim pis() As System.Reflection.Property
Dim dt As New DataTable
For i As Integer = 0 To pis.Length - 1
Dim pi As System.Reflection.Property
dt.Columns.Add(pi.Name)
Next
For Each PurchaseOrderLineItem In Me.List
Dim row As DataRow = dt.NewRow()
For i As Integer = 0 To pis.Length - 1
Dim pi As System.Reflection.Property
row(i) = pi.GetValue(PurchaseOrderL
Next
dt.Rows.Add(row)
Next
Return dt
End Function
#End Region
#Region "ComponentModel.IBindingLi
Public Sub AddIndex(ByVal [property] As System.ComponentModel.Prop
Throw New System.NotImplementedExcep
End Sub
Public Function AddNew() As Object Implements System.ComponentModel.IBin
Throw New System.NotImplementedExcep
End Function
Public ReadOnly Property AllowEdit() As Boolean Implements System.ComponentModel.IBin
Get
Throw New System.NotImplementedExcep
End Get
End Property
Public ReadOnly Property AllowNew() As Boolean Implements System.ComponentModel.IBin
Get
Throw New System.NotImplementedExcep
End Get
End Property
Public ReadOnly Property AllowRemove() As Boolean Implements System.ComponentModel.IBin
Get
Throw New System.NotImplementedExcep
End Get
End Property
Public Function Find(ByVal [property] As System.ComponentModel.Prop
Throw New System.NotImplementedExcep
End Function
Public ReadOnly Property IsSorted() As Boolean Implements System.ComponentModel.IBin
Get
Throw New System.NotImplementedExcep
End Get
End Property
Public Event ListChanged(ByVal sender As Object, ByVal e As System.ComponentModel.List
Public Sub RemoveIndex(ByVal [property] As System.ComponentModel.Prop
Throw New System.NotImplementedExcep
End Sub
Public Sub RemoveSort() Implements System.ComponentModel.IBin
Throw New System.NotImplementedExcep
End Sub
Public ReadOnly Property SortDirection() As System.ComponentModel.List
Get
Throw New System.NotImplementedExcep
End Get
End Property
Public ReadOnly Property SortProperty() As System.ComponentModel.Prop
Get
Throw New System.NotImplementedExcep
End Get
End Property
Public ReadOnly Property SupportsChangeNotification
Get
Throw New System.NotImplementedExcep
End Get
End Property
Public ReadOnly Property SupportsSearching() As Boolean Implements System.ComponentModel.IBin
Get
Throw New System.NotImplementedExcep
End Get
End Property
Public ReadOnly Property SupportsSorting() As Boolean Implements System.ComponentModel.IBin
Get
Throw New System.NotImplementedExcep
End Get
End Property
#End Region
End Class
ASKER
If it is too much, I can do it another way. I justed tried using a generic list of purchaseorderitems and it worked for me.
Open in new window