【问题标题】:Addhandler for dynamically created controlsAddhandler 用于动态创建的控件
【发布时间】:2014-01-30 18:58:17
【问题描述】:

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

我已经给每个 ImageButton 一个唯一的 ID(从 sql server 中的 Albums 表中获取 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% 确定它们是如何工作的!有人能指出我正确的方向并举个例子吗?

【问题讨论】:

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


【解决方案1】:

添加循环块:

AddHandler myAlbum.Click, AddressOf NameOfMethode

或在每次迭代中单独使用 lambda:

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)

【讨论】:

  • 谢谢 :) 我仍然不能 100% 确定你的意思,你能用我的代码举个例子吗?我已经在答案部分发布了我的新代码
  • 发布您希望在单击每个按钮时执行的过程。
  • 我已经解决了,谢谢 :) 我使用了以下内容:AddHandler myAlbum.Click, Sub() AlbumClick(myAlbum.ID) 和 Protected Sub AlbumClick(ByVal e As Object) MsgBox(e)结束子
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-10
  • 2011-06-27
  • 2012-07-12
  • 1970-01-01
  • 2017-07-22
相关资源
最近更新 更多