将控件动态添加到数据中继器中的面板

时间:2010-07-15 18:30:45

标签: asp.net vb.net

我有一个数据转发器,我需要根据它们在数据库中的存在来添加x个图像。

我需要在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 

关于我做错了什么的想法 - 或者更好的做事方式?

2 个答案:

答案 0 :(得分:1)

您只创建一个Link和一个Image对象,并在每次迭代时使用它。将myLink和myImage的dims移动到if语句中,一切都应该有效。

答案 1 :(得分:0)

尝试观看此视频,它会显示一些可能有用的代码。

DataRepeater

希望这有帮助。