Addhandler用于动态创建的控件

时间:2014-01-30 10:41:13

标签: asp.net vb.net visual-studio-2012

我编写了一段代码,用于检索一个人拥有的相册数量,然后在“相册”面板中动态创建相同数量的ImageButton。面板。

我已经为每个ImageButton提供了一个唯一的Id(来自sql server中Albums表的Grabs AlbumId),并希望能够识别用户点击的ImageButton(将myAlbum.ID存储在变量中,以及如何使用它在稍后的存储过程中检索属于该专辑的图片。)

spRetrieveAlbums示例代码:

    SELECT AlbumId FROM dbo.Albums WHERE Id = @CurrentUserId;
    SET @AlbumCount = @@ROWCOUNT;

Main.aspx.vb代码:

    Connection.Open()

        sqlReader = spRetrieveAlbums.ExecuteReader()

            If sqlReader.HasRows() Then
                Do While sqlReader.Read()
                    Dim myAlbum = New ImageButton
                    myAlbum.ID = sqlReader.GetInt32(0)
                    myAlbum.Visible = True
                    myAlbum.Width = 160
                    myAlbum.Height = 160
                    myAlbum.BorderStyle = BorderStyle.Solid
                    myAlbum.BorderColor = Drawing.Color.WhiteSmoke
                    myAlbum.BorderWidth = 1
                    AlbumsPanel.Controls.Add(myAlbum)
                Loop
            End If

        sqlReader.Close()

        AlbumCount = spRetrieveAlbums.Parameters("@AlbumCount").Value

    Connection.Close()

        AlbumCountSpan.InnerHtml = "Albums: " & AlbumCount

有人提到在代码中使用了一个addhandler,但我不能100%确定它们是如何工作的!有人可以指出我正确的方向并举一个例子吗?

1 个答案:

答案 0 :(得分:0)

添加循环块:

AddHandler myAlbum.Click, AddressOf NameOfMethode
使用lambda:

或每次迭代分离metode

AddHandler myAlbum.Click, Sub() someAction

首先,您应该识别发件人。像:

Sub NameOfMethode(sender As Object, e As ImageClickEventArgs) 
   Label1.Text = Ctype(sender, ImageButton).ID
End Sub

但是在第二种方式中,您可以为每次迭代编写适当的函数。像:

AddHandler myAlbum.Click, Sub() Label1.Text = sqlReader(0)