📄 databounddataset.vb
字号:
Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Collections
Imports System.Data
Namespace myControls
<ParseChildren(true)> _
Public Class DataBoundDataSet
Inherits Control
Private _dataSource As Object
Private _dataMember As String = String.Empty
Private _itemTemplate As ITemplate
Public Property DataSource As Object
Get
Return _dataSource
End Get
Set
_dataSource = Value
End Set
End Property
Public Property DataMember As String
Get
Return _dataMember
End Get
Set
_dataMember = Value
End Set
End Property
Private Function GetDataSource( DataSource, DataMember ) As IEnumerable
If TypeOf DataSource Is IEnumerable Then
Return DataSource
Else If TypeOf DataSource Is DataSet Then
If DataMember <> String.Empty Then
Return DataSource.Tables( DataMember ).DefaultView
Else
Return DataSource.Tables( 0 ).DefaultView
End If
Else
Throw New ArgumentException( "Invalid data source!" )
End If
End Function
Protected Overrides Sub OnDataBinding( e As EventArgs )
Dim objDataEnum As IEnumerator
Dim objItem As DataBoundDataSetItem
Dim intCounter As Integer
If Not DataSource Is Nothing
Controls.Clear()
ClearChildViewState()
objDataEnum = GetDataSource( _dataSource, _dataMember ).GetEnumerator()
While ( objDataEnum.MoveNext() )
objItem = New DataBoundDataSetItem( objDataEnum.Current )
ItemTemplate.InstantiateIn( objItem )
Controls.Add( objItem )
intCounter += 1
End While
ViewState( "NumItems" ) = intCounter
ChildControlsCreated = True
End If
End Sub
Protected Overrides Sub CreateChildControls()
Dim objNumItems As Object
Dim intItemCount As Integer
Dim intCounter As Integer
Dim objItem As DataBoundDataSetItem
objNumItems = ViewState( "NumItems" )
If Not objNumItems = Nothing Then
Controls.Clear()
intItemCount = CInt( objNumItems)
For intCounter = 0 To intItemCount - 1
objItem = New DataBoundDataSetItem( Nothing )
ItemTemplate.InstantiateIn( objItem )
Controls.Add( objItem )
Next
End If
End Sub
<TemplateContainer(GetType(DataBoundDataSetItem))> _
Public Property ItemTemplate As ITemplate
Get
Return _itemTemplate
End Get
Set
_itemTemplate = value
End Set
End Property
End Class
Public Class DataBoundDataSetItem
Inherits Control
Implements INamingContainer
Private _DataItem As Object
Public Sub New( DataItem As Object )
MyBase.New()
_DataItem = DataItem
End Sub
Public ReadOnly Property DataItem As Object
Get
Return _DataItem
End Get
End Property
End Class
End Namespace
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -