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

📄 databoundstate.vb

📁 asp.net技术内幕的书配源码
💻 VB
字号:
Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Collections

Namespace myControls

<ParseChildren(true)> _
Public Class DataBoundState
Inherits Control

  Private _dataSource As IEnumerable
  Private _itemTemplate As ITemplate

  Public Property DataSource As IEnumerable
    Get
      Return _dataSource
    End Get
    Set
      _dataSource = Value
    End Set
  End Property


  Protected Overrides Sub OnDataBinding( e As EventArgs )
    Dim objDataEnum As IEnumerator
    Dim objItem As DataBoundStateItem
    Dim intCounter As Integer

    If Not DataSource Is Nothing
      Controls.Clear()
      ClearChildViewState()
      objDataEnum = DataSource.GetEnumerator()
      While ( objDataEnum.MoveNext() )
        objItem = New DataBoundStateItem( 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 DataBoundStateItem

    objNumItems = ViewState( "NumItems" )
    If Not objNumItems = Nothing Then
      Controls.Clear()
      intItemCount = CInt( objNumItems)
      For intCounter = 0 To intItemCount - 1
        objItem  = New DataBoundStateItem( Nothing )
        ItemTemplate.InstantiateIn( objItem )
        Controls.Add( objItem )
      Next
    End If
  End Sub

  <TemplateContainer(GetType(DataBoundStateItem))> _
  Public Property ItemTemplate As ITemplate
    Get
      Return _itemTemplate
    End Get
    Set
      _itemTemplate = value
    End Set
  End Property
End Class


Public Class DataBoundStateItem
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 + -