2

AjaxControlToolkit のコントロールを使用する ASP.net サーバー コントロールを作成しようとしています。基本的に、コントロールはドロップダウンリストとボタンです。ユーザーがボタンをクリックすると、モーダル ダイアログ (modalPopupExtender) が開きます。ダイアログには、選択できるオプションのリストを含むチェックボックスリストがあります。ユーザーが選択肢を選択して [OK] ボタンをクリックすると、ダイアログでダイアログが閉じ、選択した選択肢がドロップダウンリストに追加されます。ただし、何が起こっているかというと、ユーザーが選択を行って [OK] をクリックすると、チェックボックス リストの最後の項目だけが追加されるということです。私がオーバーライドする継承された関数と関係があるのではないかと思います。誰かが私が間違っているかもしれないことを教えてもらえますか? 関連するコードは次のとおりです。

<DefaultProperty("Text"), ToolboxData("<{0}:myServerControl runat=server> 
        </{0}:myServerControl >")> _
Public Class myServerControl 
Inherits CompositeControl
Implements INamingContainer, IPostBackEventHandler

Private myDropDownListAs New DropDownList
Private addPlant As New Button
Private _updatePanel As UpdatePanel
Private _modalExtenderOne As AjaxControlToolkit.ModalPopupExtender
Private lblWarning As Label
Private cb1 As New CheckBoxList
Private btnSavePlants As New Button
Private btnCancel As New Button

  Protected Overrides Function SaveViewState() As Object
    Return New Pair(MyBase.SaveViewState(), Nothing)
End Function


Protected Overrides Sub LoadViewState(ByVal savedState As Object)
    MyBase.LoadViewState(CType(savedState, Pair).First)
    EnsureChildControls()
End Sub

Protected Overrides Sub CreateChildControls()
    createDynamicControls()
    MyBase.CreateChildControls()
End Sub

Protected Overrides Sub OnInit(ByVal e As System.EventArgs)       
    MyBase.OnInit(e)

End Sub
Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
    MyBase.OnLoad(e)
End Sub

 Private Sub createDynamicControls()
    Controls.Clear()
    AddHandler btnSavePlants.Click, AddressOf saveItems_Click
    _updatePanel = New UpdatePanel
    Dim myTable As New Table
    myTable = buildControl()  ' a funciton that returns a built table
    Dim myPanel As New Panel
    myPanel = buildDialog()  'a function taht returns a build modal dialog
    _updatePanel.ContentTemplateContainer.Controls.Add(myTable)
    _updatePanel.ContentTemplateContainer.Controls.Add(myPanel)
    Me.Controls.Add(_updatePanel)
End Sub

  Protected Sub saveItems_Click(ByVal sender As Object, ByVal e As EventArgs)
    Me.myDropDownList.Items.Clear()
    Try
        For Each i As ListItem In Me.cb1.Items
            If (i.Selected = True) Then
                Dim newLi As New ListItem
                With newLi
                    .Selected = False
                    .Text = i.Text
                    .Value = i.Value
                End With

                Me.myDropDownList.Items.Add(newLi)
            Else                    
            End If

        Next
    Catch ex As Exception

    End Try

End Sub

   Public Sub bindSelections(ByVal myList As List(Of myObject))

    For Each p As myObjectIn myList
        Dim newLI As New ListItem
        newLI.Value = p.EquipmentPK
        newLI.Text = p.EquipmentID

        Me.cb1.Items.Add(newLI)

    Next



End Sub


Public Sub RaisePostBackEvent(ByVal eventArgument As String) Implements System.Web.UI.IPostBackEventHandler.RaisePostBackEvent

End Sub

End Class
4

0 に答える 0