⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ordersanddetails.vb

📁 编程之道VB.NETt程序设计入门-589M.zip
💻 VB
📖 第 1 页 / 共 2 页
字号:
                Me(Me.tableOrders.OrderIDColumn) = value
            End Set
        End Property
        
        Public Property OrderDate As Date
            Get
                Try 
                    Return CType(Me(Me.tableOrders.OrderDateColumn),Date)
                Catch e As InvalidCastException
                    Throw New StrongTypingException("无法获取值,因为它是 DBNull。", e)
                End Try
            End Get
            Set
                Me(Me.tableOrders.OrderDateColumn) = value
            End Set
        End Property
        
        Public Property Freight As Double
            Get
                Try 
                    Return CType(Me(Me.tableOrders.FreightColumn),Double)
                Catch e As InvalidCastException
                    Throw New StrongTypingException("无法获取值,因为它是 DBNull。", e)
                End Try
            End Get
            Set
                Me(Me.tableOrders.FreightColumn) = value
            End Set
        End Property
        
        Public Property ShipName As String
            Get
                Try 
                    Return CType(Me(Me.tableOrders.ShipNameColumn),String)
                Catch e As InvalidCastException
                    Throw New StrongTypingException("无法获取值,因为它是 DBNull。", e)
                End Try
            End Get
            Set
                Me(Me.tableOrders.ShipNameColumn) = value
            End Set
        End Property
        
        Public Function IsOrderDateNull() As Boolean
            Return Me.IsNull(Me.tableOrders.OrderDateColumn)
        End Function
        
        Public Sub SetOrderDateNull()
            Me(Me.tableOrders.OrderDateColumn) = System.Convert.DBNull
        End Sub
        
        Public Function IsFreightNull() As Boolean
            Return Me.IsNull(Me.tableOrders.FreightColumn)
        End Function
        
        Public Sub SetFreightNull()
            Me(Me.tableOrders.FreightColumn) = System.Convert.DBNull
        End Sub
        
        Public Function IsShipNameNull() As Boolean
            Return Me.IsNull(Me.tableOrders.ShipNameColumn)
        End Function
        
        Public Sub SetShipNameNull()
            Me(Me.tableOrders.ShipNameColumn) = System.Convert.DBNull
        End Sub
        
        Public Function GetDetailsRows() As DetailsRow()
            Return CType(Me.GetChildRows(Me.Table.ChildRelations("OrdersDetails")),DetailsRow())
        End Function
    End Class
    
    <System.Diagnostics.DebuggerStepThrough()>  _
    Public Class OrdersRowChangeEvent
        Inherits EventArgs
        
        Private eventRow As OrdersRow
        
        Private eventAction As DataRowAction
        
        Public Sub New(ByVal row As OrdersRow, ByVal action As DataRowAction)
            MyBase.New
            Me.eventRow = row
            Me.eventAction = action
        End Sub
        
        Public ReadOnly Property Row As OrdersRow
            Get
                Return Me.eventRow
            End Get
        End Property
        
        Public ReadOnly Property Action As DataRowAction
            Get
                Return Me.eventAction
            End Get
        End Property
    End Class
    
    <System.Diagnostics.DebuggerStepThrough()>  _
    Public Class DetailsDataTable
        Inherits DataTable
        Implements System.Collections.IEnumerable
        
        Private columnOrderID As DataColumn
        
        Private columnUnitPrice As DataColumn
        
        Private columnDiscount As DataColumn
        
        Friend Sub New()
            MyBase.New("Details")
            Me.InitClass
        End Sub
        
        Friend Sub New(ByVal table As DataTable)
            MyBase.New(table.TableName)
            If (table.CaseSensitive <> table.DataSet.CaseSensitive) Then
                Me.CaseSensitive = table.CaseSensitive
            End If
            If (table.Locale.ToString <> table.DataSet.Locale.ToString) Then
                Me.Locale = table.Locale
            End If
            If (table.Namespace <> table.DataSet.Namespace) Then
                Me.Namespace = table.Namespace
            End If
            Me.Prefix = table.Prefix
            Me.MinimumCapacity = table.MinimumCapacity
            Me.DisplayExpression = table.DisplayExpression
        End Sub
        
        <System.ComponentModel.Browsable(false)>  _
        Public ReadOnly Property Count As Integer
            Get
                Return Me.Rows.Count
            End Get
        End Property
        
        Friend ReadOnly Property OrderIDColumn As DataColumn
            Get
                Return Me.columnOrderID
            End Get
        End Property
        
        Friend ReadOnly Property UnitPriceColumn As DataColumn
            Get
                Return Me.columnUnitPrice
            End Get
        End Property
        
        Friend ReadOnly Property DiscountColumn As DataColumn
            Get
                Return Me.columnDiscount
            End Get
        End Property
        
        Public Default ReadOnly Property Item(ByVal index As Integer) As DetailsRow
            Get
                Return CType(Me.Rows(index),DetailsRow)
            End Get
        End Property
        
        Public Event DetailsRowChanged As DetailsRowChangeEventHandler
        
        Public Event DetailsRowChanging As DetailsRowChangeEventHandler
        
        Public Event DetailsRowDeleted As DetailsRowChangeEventHandler
        
        Public Event DetailsRowDeleting As DetailsRowChangeEventHandler
        
        Public Overloads Sub AddDetailsRow(ByVal row As DetailsRow)
            Me.Rows.Add(row)
        End Sub
        
        Public Overloads Function AddDetailsRow(ByVal parentOrdersRowByOrdersDetails As OrdersRow, ByVal UnitPrice As Double, ByVal Discount As Double) As DetailsRow
            Dim rowDetailsRow As DetailsRow = CType(Me.NewRow,DetailsRow)
            rowDetailsRow.ItemArray = New Object() {parentOrdersRowByOrdersDetails(0), UnitPrice, Discount}
            Me.Rows.Add(rowDetailsRow)
            Return rowDetailsRow
        End Function
        
        Public Function GetEnumerator() As System.Collections.IEnumerator Implements System.Collections.IEnumerable.GetEnumerator
            Return Me.Rows.GetEnumerator
        End Function
        
        Public Overrides Function Clone() As DataTable
            Dim cln As DetailsDataTable = CType(MyBase.Clone,DetailsDataTable)
            cln.InitVars
            Return cln
        End Function
        
        Protected Overrides Function CreateInstance() As DataTable
            Return New DetailsDataTable
        End Function
        
        Friend Sub InitVars()
            Me.columnOrderID = Me.Columns("OrderID")
            Me.columnUnitPrice = Me.Columns("UnitPrice")
            Me.columnDiscount = Me.Columns("Discount")
        End Sub
        
        Private Sub InitClass()
            Me.columnOrderID = New DataColumn("OrderID", GetType(System.Int32), Nothing, System.Data.MappingType.Element)
            Me.Columns.Add(Me.columnOrderID)
            Me.columnUnitPrice = New DataColumn("UnitPrice", GetType(System.Double), Nothing, System.Data.MappingType.Element)
            Me.Columns.Add(Me.columnUnitPrice)
            Me.columnDiscount = New DataColumn("Discount", GetType(System.Double), Nothing, System.Data.MappingType.Element)
            Me.Columns.Add(Me.columnDiscount)
        End Sub
        
        Public Function NewDetailsRow() As DetailsRow
            Return CType(Me.NewRow,DetailsRow)
        End Function
        
        Protected Overrides Function NewRowFromBuilder(ByVal builder As DataRowBuilder) As DataRow
            Return New DetailsRow(builder)
        End Function
        
        Protected Overrides Function GetRowType() As System.Type
            Return GetType(DetailsRow)
        End Function
        
        Protected Overrides Sub OnRowChanged(ByVal e As DataRowChangeEventArgs)
            MyBase.OnRowChanged(e)
            If (Not (Me.DetailsRowChangedEvent) Is Nothing) Then
                RaiseEvent DetailsRowChanged(Me, New DetailsRowChangeEvent(CType(e.Row,DetailsRow), e.Action))
            End If
        End Sub
        
        Protected Overrides Sub OnRowChanging(ByVal e As DataRowChangeEventArgs)
            MyBase.OnRowChanging(e)
            If (Not (Me.DetailsRowChangingEvent) Is Nothing) Then
                RaiseEvent DetailsRowChanging(Me, New DetailsRowChangeEvent(CType(e.Row,DetailsRow), e.Action))
            End If
        End Sub
        
        Protected Overrides Sub OnRowDeleted(ByVal e As DataRowChangeEventArgs)
            MyBase.OnRowDeleted(e)
            If (Not (Me.DetailsRowDeletedEvent) Is Nothing) Then
                RaiseEvent DetailsRowDeleted(Me, New DetailsRowChangeEvent(CType(e.Row,DetailsRow), e.Action))
            End If
        End Sub
        
        Protected Overrides Sub OnRowDeleting(ByVal e As DataRowChangeEventArgs)
            MyBase.OnRowDeleting(e)
            If (Not (Me.DetailsRowDeletingEvent) Is Nothing) Then
                RaiseEvent DetailsRowDeleting(Me, New DetailsRowChangeEvent(CType(e.Row,DetailsRow), e.Action))
            End If
        End Sub
        
        Public Sub RemoveDetailsRow(ByVal row As DetailsRow)
            Me.Rows.Remove(row)
        End Sub
    End Class
    
    <System.Diagnostics.DebuggerStepThrough()>  _
    Public Class DetailsRow
        Inherits DataRow
        
        Private tableDetails As DetailsDataTable
        
        Friend Sub New(ByVal rb As DataRowBuilder)
            MyBase.New(rb)
            Me.tableDetails = CType(Me.Table,DetailsDataTable)
        End Sub
        
        Public Property OrderID As Integer
            Get
                Try 
                    Return CType(Me(Me.tableDetails.OrderIDColumn),Integer)
                Catch e As InvalidCastException
                    Throw New StrongTypingException("无法获取值,因为它是 DBNull。", e)
                End Try
            End Get
            Set
                Me(Me.tableDetails.OrderIDColumn) = value
            End Set
        End Property
        
        Public Property UnitPrice As Double
            Get
                Try 
                    Return CType(Me(Me.tableDetails.UnitPriceColumn),Double)
                Catch e As InvalidCastException
                    Throw New StrongTypingException("无法获取值,因为它是 DBNull。", e)
                End Try
            End Get
            Set
                Me(Me.tableDetails.UnitPriceColumn) = value
            End Set
        End Property
        
        Public Property Discount As Double
            Get
                Try 
                    Return CType(Me(Me.tableDetails.DiscountColumn),Double)
                Catch e As InvalidCastException
                    Throw New StrongTypingException("无法获取值,因为它是 DBNull。", e)
                End Try
            End Get
            Set
                Me(Me.tableDetails.DiscountColumn) = value
            End Set
        End Property
        
        Public Property OrdersRow As OrdersRow
            Get
                Return CType(Me.GetParentRow(Me.Table.ParentRelations("OrdersDetails")),OrdersRow)
            End Get
            Set
                Me.SetParentRow(value, Me.Table.ParentRelations("OrdersDetails"))
            End Set
        End Property
        
        Public Function IsOrderIDNull() As Boolean
            Return Me.IsNull(Me.tableDetails.OrderIDColumn)
        End Function
        
        Public Sub SetOrderIDNull()
            Me(Me.tableDetails.OrderIDColumn) = System.Convert.DBNull
        End Sub
        
        Public Function IsUnitPriceNull() As Boolean
            Return Me.IsNull(Me.tableDetails.UnitPriceColumn)
        End Function
        
        Public Sub SetUnitPriceNull()
            Me(Me.tableDetails.UnitPriceColumn) = System.Convert.DBNull
        End Sub
        
        Public Function IsDiscountNull() As Boolean
            Return Me.IsNull(Me.tableDetails.DiscountColumn)
        End Function
        
        Public Sub SetDiscountNull()
            Me(Me.tableDetails.DiscountColumn) = System.Convert.DBNull
        End Sub
    End Class
    
    <System.Diagnostics.DebuggerStepThrough()>  _
    Public Class DetailsRowChangeEvent
        Inherits EventArgs
        
        Private eventRow As DetailsRow
        
        Private eventAction As DataRowAction
        
        Public Sub New(ByVal row As DetailsRow, ByVal action As DataRowAction)
            MyBase.New
            Me.eventRow = row
            Me.eventAction = action
        End Sub
        
        Public ReadOnly Property Row As DetailsRow
            Get
                Return Me.eventRow
            End Get
        End Property
        
        Public ReadOnly Property Action As DataRowAction
            Get
                Return Me.eventAction
            End Get
        End Property
    End Class
End Class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -