2010-07-15 186 views
0

我有一个数据中继器,我需要添加数量的图像取决于它们在数据库中的存在。动态添加控件到数据中继器内的面板

我需要在超链接中添加用于Javascript功能的图像。为了动态添加超链接和图像,我将它们放置在数据重复器的面板中,并将它们添加到ItemDataBound事件中。

问题是只有第一张图像正在写入datarepeater。

Protected Sub Repeater1_ItemDataBound(ByVal sender As Object, ByVal e As RepeaterItemEventArgs) Handles myDataRepeater.ItemDataBound 
    Dim myPanel As Panel = e.Item.FindControl("pnlImages") 
    Dim myLink As New System.Web.UI.WebControls.HyperLink 
    Dim myImage As New System.Web.UI.WebControls.Image 
    Dim myProperty As String = Request.QueryString("ID") 

    Dim dirInfo As New DirectoryInfo(Server.MapPath("~/ftp/images/")) 
    Dim fs_infos() As FileInfo = dirInfo.GetFiles("*" + myProperty.Substring(1) + "*") 
    For Each fs_info As FileInfo In fs_infos 
     If fs_info.Name.Substring(8, 1) <> "P" Then 

      myLink.ID = fs_info.Name 
      myLink.NavigateUrl = "~/ftp/images/" + fs_info.Name 
      myLink.Attributes.Add("onClick", "return hs.expand(this)") 
      myLink.Width = 90 

      myImage.ID = "img" + fs_info.Name 
      myImage.ImageUrl = "~/ftp/images/" + fs_info.Name 
      myImage.Width = 80 
      myImage.Height = 60 
      myLink.Controls.Add(myImage) 
      myPanel.Controls.Add(myLink) 
     End If 
    Next fs_info 
    fs_infos = Nothing 


End Sub 

任何想法,我做错了什么 - 或更好的做事方式?

回答

1

您只创建一个Link和一个Image对象,并将其用于每次迭代。将myLink和myImage的变暗移动到if语句中,一切都应该起作用。

+0

是的。或者在你的循环中有'myLink = New ...'和'myImage = New ...' – 2010-07-15 19:33:01

0

试着看这个视频,它会告诉你一些可能有用的代码。

DataRepeater

希望这有助于。